首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果元素包含确切的文本,如何在单击时刷新页面?

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

Stack Overflow用户
提问于 2012-05-15 14:04:07
回答 3查看 267关注 0票数 0

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

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

现在我想做的是:

如果您尚未登录,则会收到一条警告消息。

如果您已登录-刷新页面(理想情况下,我希望将“添加到收藏夹”更改为“已成功添加收藏夹”,而不是刷新页面-但我不知道如何操作)。

如果你已经添加到收藏夹-刷新页面(理想情况下,我希望将“从收藏夹中删除”更改为“收藏夹成功删除”,而不是刷新页面-但我不知道如何操作)。

{module_isloggedin}标记是由我使用的系统生成的。如果已登录,则生成'1‘;如果未登录,则生成'0’。

到目前为止,所有发生的事情都是错误消息--可能是因为我的:contains没有工作?

整个代码看起来太长太马虎了。我还在学习:)

到目前为止,这是我的jQuery,我还没有为“从收藏夹中删除”设置页面刷新。

/**更新的代码可以工作,只是有点难看:) **/

代码语言:javascript
运行
复制
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.');
    }
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-15 15:17:42

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

代码语言:javascript
运行
复制
var stringtocheckon = $('.box-content ul li').html();

然后勾选

代码语言:javascript
运行
复制
if(stringtocheckon.indexOf('Add to Favorites')>=0) { }
票数 1
EN

Stack Overflow用户

发布于 2012-05-15 14:35:39

代码语言:javascript
运行
复制
     $('.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
EN

Stack Overflow用户

发布于 2012-05-16 02:32:35

不客气,贾斯汀

你说代码有点难看--为了整洁,你自己创建一个函数来做ajax代码……

代码语言:javascript
运行
复制
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。

我还没有运行上面的代码,但希望您能理解要点

抢夺

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10594969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档