Jquery 更新:$。第一次运行后,与添加/删除类的元素ID匹配的每个

Jquery 更新:$。第一次运行后,与添加/删除类的元素ID匹配的每个,jquery,jquery-mobile,Jquery,Jquery Mobile,将ID值存储在localStorage中,并将这些值与元素ID匹配以添加/删除类 我的问题是,第一次显示页面时匹配工作正常(有匹配时应用类,没有匹配时忽略)。但是,在显示具有匹配项的页面并应用该类之后,不具有匹配项的页面的后续视图显示该类的应用不正确 下面是引起我悲痛的代码部分 follows = JSON.parse(localStorage.getItem('follows')) || []; $.each(follows, function(key, value) { ale

将ID值存储在localStorage中,并将这些值与元素ID匹配以添加/删除类

我的问题是,第一次显示页面时匹配工作正常(有匹配时应用类,没有匹配时忽略)。但是,在显示具有匹配项的页面并应用该类之后,不具有匹配项的页面的后续视图显示该类的应用不正确

下面是引起我悲痛的代码部分

follows = JSON.parse(localStorage.getItem('follows')) || [];


$.each(follows, function(key, value) {

    alert(value);
    if (value === $('a.followButtonPage').attr("id")) {
        alert('matched: ' + value);

        $('a[id="' + value + '"]').removeClass("follow").addClass("unfollow");
    }

});
我在pageshow上运行代码,并将其包装在一个函数中(该函数应该等待DOM完全加载):

提前感谢您的帮助和指导。任何能解决这个问题的方法都是完全不同的

更新:下面推荐的代码(尽管是更好的方法)会导致相同的行为(因此仍在搜索解决方案)

$.each(follows, function(key, value) {
    $('#' + value ).removeClass("follow").addClass("unfollow");
});

这不仅无法检查您可能想要的内容,而且完全没有必要。您所需要的只是:

$.each(follows, function(key, value) {
    $('#' + value ).removeClass("follow").addClass("unfollow");
});

由于您通过ID
$(“#”+值)来定位元素已经足够了,因为ID在文档中应该是唯一的。检查是否有匹配的元素是由jQuery隐式完成的,因此如果没有匹配,它将不做任何事。

这个问题不是很清楚,上下文非常模糊
.attr()
将只返回集合中第一个元素的属性,因此如果有更多的元素与
a.followButtonPage
选择器匹配,您将在每次迭代中将
与第一个元素的
id
进行比较。谢谢,我们将很快重试。我得到的结果与原始代码完全相同,包括first时间正确加上页面刷新更正。说明:第一次执行(始终正确应用类)然后应用于所有后续页面显示(使用不同ID),无论其结果是否“正确”。
$.each(follows, function(key, value) {
    $('#' + value ).removeClass("follow").addClass("unfollow");
});