如果元素具有确切的文本,如何在单击时刷新页面?

时间:2012-05-15 06:04:07

标签: jquery

我的链接显示“添加到收藏夹”。默认情况下,当您单击此链接并且您已登录时,您将转到确认页面以说明您的收藏夹已添加。如果您未登录,则会转到登录屏幕。

如果您已将该项目添加到收藏夹,则会显示“从收藏夹中删除”文字,其中包含“?A =删除”的更新链接。如果单击它,您将被重定向到确认收藏夹删除的页面。

现在我要做的是:

如果您尚未登录,请收到提醒信息。

如果你已登录 - 刷新页面(理想情况下我想将'添加到收藏夹'更改为'收藏成功添加'而不是刷新页面 - 但我不知道如何)。

如果您已添加到收藏夹 - 刷新页面(理想情况下,我想将“从收藏夹中移除”更改为“收藏夹已成功删除”而不是刷新页面 - 但我不知道如何)。< / p>

{module_isloggedin}标记由我正在使用的系统生成。如果登录,它会生成'1'。如果没有登录,则为“0”。

到目前为止,所发生的一切都是错误信息 - 也许是因为我的:包含不起作用?

整个代码似乎太长而且草率。我还在学习:)。

到目前为止,这是我的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.');
    }
});

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

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

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

然后检查

if(stringtocheckon.indexOf('Add to Favorites')>=0) { }

答案 2 :(得分: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's;通过在此处设置默认值senddata =“remove”。看起来它只是添加或删除您正在使用的。

我没有运行上面的代码,但希望你得到要点

罗布