我有一个链接,上面写着“添加到收藏夹”。默认情况下,当您单击此链接并登录时,您将转到确认页面,告知您的收藏夹已添加。如果您没有登录,它会将您带到登录屏幕。
如果您已经将该项目添加到收藏夹,则文本会显示“从收藏夹中删除”,并更新链接以包含“?a=删除”。如果单击它,您将被重定向至确认删除收藏夹的页面。
现在我想做的是:
如果您尚未登录,则会收到一条警告消息。
如果您已登录-刷新页面(理想情况下,我希望将“添加到收藏夹”更改为“已成功添加收藏夹”,而不是刷新页面-但我不知道如何操作)。
如果你已经添加到收藏夹-刷新页面(理想情况下,我希望将“从收藏夹中删除”更改为“收藏夹成功删除”,而不是刷新页面-但我不知道如何操作)。
{module_isloggedin}标记是由我使用的系统生成的。如果已登录,则生成'1‘;如果未登录,则生成'0’。
到目前为止,所有发生的事情都是错误消息--可能是因为我的:contains没有工作?
整个代码看起来太长太马虎了。我还在学习:)
到目前为止,这是我的jQuery,我还没有为“从收藏夹中删除”设置页面刷新。
/**更新的代码可以工作,只是有点难看:) **/
jQuery('.add-favourites a').live('click', function(e){
e.preventDefault();
var loggedin = "{module_isloggedin}";
if (loggedin == 1) {
var stringtocheckon = jQuery('.add-favourites a').html();
if(stringtocheckon.indexOf('Add to Favorites')>=0) {
$.ajax({
url: $(this).attr('href'),
data: { 'A': 'Add' },
cache: false,
success: function (data) {
document.location.reload(true);
}
});
}else{
if(jQuery(this).attr('href').indexOf("A=Remove") != -1){
jQuery.ajax({
url: jQuery(this).attr('href'),
cache: false,
success: function (data) {
document.location.reload(true);
}
});
}else{
jQuery.ajax({
url: jQuery(this).attr('href')+"&A=Remove",
cache: false,
success: function (data) {
document.location.reload(true);
}
});
}
}
}else{
alert('You must be logged in to add favourites.');
}
});
发布于 2012-05-15 15:17:42
对于Jquery库,要从元素内部获取值(字符串、文本或其他html ),可以使用.html()或.text();
var stringtocheckon = $('.box-content ul li').html();
然后勾选
if(stringtocheckon.indexOf('Add to Favorites')>=0) { }
发布于 2012-05-15 14:35:39
$('.add-favourites a').on('click', function (e) {
e.preventDefault();
var obj = $(this);
//var loggedin = "{module_isloggedin}";
var loggedin = "1";
if (loggedin == 1) {
if ($(this).hasClass('AddToFavourites')) {
$.ajax({
url: $(this).attr('href'),
data: { 'A': 'Add' },
cache: false,
success: function (data) {
obj.removeClass('AddToFavourites').addClass('RemoveFromFavourites').text('Favorite added successfully');
}
});
} else {
$.ajax({
url: $(this).attr('href'),
data: { 'A': 'Remove' },
cache: false,
success: function (data) {
obj.removeClass('RemoveFromFavourites').addClass('AddToFavourites').text('Add to favorites');
}
});
}
} else {
alert('You must be logged in to add favorites.');
}
});
<a href="Your Url" class="AddToFavourites">Add to favorites</a>
<a href="Your Url" class="RemoveFromFavourites">Favorite added successfully</a>
发布于 2012-05-16 02:32:35
不客气,贾斯汀
你说代码有点难看--为了整洁,你自己创建一个函数来做ajax代码……
function getmypageandreload(url,senddata) {
$.ajax({
url: url,
data: { 'A': senddata },
cache: false,
success: function (data) {
document.location.reload(true);
}
}
$(".yourelementclass").click(function() {
var loggedin = "{module_isloggedin}";
var url=$(this).attr('href');
var senddata="";
if (loggedin == 1) {
var stringtocheckon = $('.add-favourites a').html();
if(stringtocheckon.indexOf('Add to Favorites')>=0) {
senddata="Add";
} else if($(this).attr('href').indexOf("A=Remove") != -1){
senddata = "Remove";
}
getmypageandreload(url,senddata);
} else { alert('You must be logged in to add favourites.'); }
});
});
看起来你可以通过在这里设置默认的senddata = " remove“来进一步减少'if else‘s,它看起来只是你正在使用的add或remove。
我还没有运行上面的代码,但希望您能理解要点
抢夺
https://stackoverflow.com/questions/10594969
复制相似问题