0

我有一个链接,上面写着“添加到收藏夹”。默认情况下,当您单击此链接并登录时,您会转到确认页面,说明您的收藏夹已添加。如果您没有登录,它会将您带到登录屏幕。

如果您已经将该项目添加到您的收藏夹,则文本会显示“从收藏夹中删除”,并带有更新的链接以包含“?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.');
    }
});
4

3 回答 3

1

使用 Jquery 库,要从元素内部获取值(字符串、文本或其他 html),我们可以使用 .html() 或 .text();

var stringtocheckon = $('.box-content ul li').html();

然后检查

if(stringtocheckon.indexOf('Add to Favorites')>=0) { }
于 2012-05-15T07:17:42.033 回答
1
     $('.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-15T06:35:38.580 回答
0

不客气,贾斯汀,

你说代码有点难看 - 整理一下,自己创建一个函数来做 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.');  }
  });

 });

看起来您可以进一步减少“if else”;通过在这里设置默认的 senddata = "remove" 。看起来它只会添加或删除您正在使用的内容。

我没有运行上面的代码,但希望你能明白要点

于 2012-05-15T18:32:34.523 回答