jQuery json值没有被追加

时间:2013-09-15 16:24:53

标签: javascript jquery json

这是我的代码:

        success: function (data) {
            var jsonData = $.parseJSON(data);
            console.log("done");
            $.each(jsonData, function(key, value) {
                if (value !== "") { console.log("working on " + "#"+key+".div")
                    $("#"+key+".div").append("<pre>"+value+"</pre>");
                }
            });
        }

如您所见,这是成功回调函数的片段。

一切正常,直到值应该附加到我提供的选择器。但出于某种原因,没有添加任何东西。

console.log("working on " + "#"+key+".div")

是否打印,所以我知道if语句不是问题。

我认为错误在于这一行:

$("#"+key+".div").append("<pre>"+value+"</pre>"); 

但我不知道我到底错过了什么。

示例性HTML:

<div id="prx1.sjc.div"></div>
<div id="prx2.sjc.div"></div>
<div id="sh1.sjc.div"></div>
<div id="sh2.sjc.div"></div>
<div id="sh3.sjc.div"></div>
<div id="sh4.sjc.div"></div>
<div id="sh5.sjc.div"></div>
<div id="sh6.sjc.div"></div>

2 个答案:

答案 0 :(得分:2)

在id(或class)属性中使用点这不是一个好习惯。

如果你想引用这样的id:

<div id="sh6.sjc.div"></div>

你必须以这种方式逃离点

$("#sh6\\.sjc\\.div")

点在selector syntax中保留。在链接引用中写道:

  

使用任何元字符(例如   !“#$%&amp;'()* +,。/:;&lt; =&gt;?@ [] ^`{|}〜)作为名称的字面部分,必须   用两个反斜杠逃脱:\\。例如,一个元素   id =“foo.bar”,可以使用选择器$(“#foo \\。bar”)。

如果没有转义点,你将选择一个id为“sh6”的对象,它有两个类“sjc”和“div”,类似

<div id="sh6" class="sjc div"></div>

<强>快捷方式

转义jquery选择器的一个有趣的快捷方式是在jQuery博客的这个article中。

检查选择器

当您处理此问题时,请使用

之类的内容检查选择器是否与某些元素匹配
console.log("Matching the id sh6.sjc.div, occurrences:"+$("#sh6\.sjc\.div").length);

验证正在使用的选择器的正确性更容易

答案 1 :(得分:0)

我假设您尝试将内容添加到ID为"#"+key的div中 使用

$("div#"+key).append("<pre>"+value+"</pre>"); 

$("#"+key).append("<pre>"+value+"</pre>"); //You don't need to add a tag selector, since you already have the id of the element