更新:$ .each匹配元素ID以添加/删除类在首次运行后失败

时间:2015-10-11 18:47:36

标签: jquery jquery-mobile

在localStorage中存储ID值,并将值与元素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");
    }

});

我在页面显示上运行代码并包装在一个函数中(应该等到DOM完全加载):

  $(document).on("pageshow", "#archive",  function(e) {
  $( function() { …

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

更新:下面推荐的代码(虽然是一种更好的方法)会导致相同的行为(因此仍在搜索分辨率。

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

1 个答案:

答案 0 :(得分:0)

这条件不仅不会检查你想要的东西,而且完全没必要。所有你需要的是:

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

由于您按ID $('#' + value )定位元素就足够了,因为ID在文档中应该是唯一的。并且检查是否存在匹配元素是由jQuery隐式完成的,所以如果没有匹配,它将默默地做任何事情。