javascript - 迭代 DOM 和 JSON 响应的最佳实践

标签 javascript jquery json html dom

我正在尝试迭代 DOM 和 JSON 响应,并将 CSS 类添加到列表项(如果它位于该 JSON 上)。

这是一个fiddle example ,任何人都可以帮忙正确地做到这一点吗?看来我的做法不太好。

    $('#list li').each(function(){
         if ($(this).children().first().next().attr('child-name') == val.name[0] && ($(this).children().first().next().parent().hasClass('available') == false || $(this).children().first().next().parent().hasClass('notavailable') == false)) { 
       $(this).addClass("available");
 } else if (($(this).children().first().next().parent().hasClass('available') == false || $(this).children().first().next().parent().hasClass('notavailable') == false) && val.name[0] != "#N/A") {
       $(this).addClass("notavailable");
}
});

因此,尝试在此处添加一个类:

如果 json 中没有

<li data-id="id-4" client-id="4" class="myclass notavailable"><!-- Conent here --></li>

如果是在json中

<li data-id="id-4" client-id="4" class="myclass available"><!-- Conent here --></li>

最佳答案

我认为问题出在 json 的嵌套上。看来您有一个包含 1 个元素的 json 数组“clients”我尝试编辑您的 json 格式:

var response = 
    {
     "clients": [
      {"0":{"name":"Name 1"},
       "1":{"name":"Name 2"},
       "2":{"name":"Name 3"},
       "3":{"name":"Name 3"}
      }]
    };

(如果我对 json 数据的解释是正确的)-那么您可以通过以下方式获取数据,最好构造一个关联对象数组,然后您可以轻松地从 dom 循环中引用它:

var results = new Array();

jQuery.each(response['clients'][0], function(i, val) {
    results[i] = val.name;
});

$('#list li').each(function () {
    if (results[$(this).attr("client-id")] == undefined) {
        $(this).addClass("notavailable");
    } else {
        $(this).addClass("available");
    }
});
<小时/>

这是一个正在运行的 working jsfiddle 。 (仅更改 javacript)

<小时/>

关于javascript - 迭代 DOM 和 JSON 响应的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22925749/

相关文章:

javascript - 将 PHP 页面输出插入 jquery 变量

javascript - js 使颜色变亮/变暗

jquery - 为什么使用 jQuery.fn 添加插件?

java - 写入扩展数组

json - Jolt:小数转字符串

javascript - 在javascript中从外部源获取json

javascript - Blade 和 JavaScript - 如何从属性内的字符串中删除空格

javascript - 更快的 ExtJs 4 学习方法

javascript - Nodejs 集群中从工作人员到工作人员的消息

javascript - 使用 three.js 的基本二维彩色三 Angular 形