2

这是我的代码:

        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>
4

2 回答 2

2

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

如果你想引用这样的 id:

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

你必须以这种方式逃避点

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

点在选择器语法中保留。在链接的参考中写道:

要使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[]^`{|}~ )作为名称的文字部分,它必须使用两个反斜杠进行转义:\\。例如,id="foo.bar" 的元素可以使用选择器 $("#foo\\.bar")。

在不转义点的情况下,您将选择一个 ID 为“sh6”的对象,该对象有两个类“sjc”和“div”,类似于

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

捷径

jQuery 博客的这篇文章中提供了一个有趣的转义 jquery 选择器的快捷方式。

检查选择器

当您处理此问题时,请检查选择器是否匹配某些元素,使用类似

console.log("Matching the id sh6.sjc.div, occurrences:"+$("#sh6\.sjc\.div").length);

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

于 2013-09-15T16:32:18.780 回答
0

我假设您正在尝试将内容添加到 id 为"#"+key Use的 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
于 2013-09-15T16:26:56.327 回答