这是我的代码:
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>
答案 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