jQuery没有看到新创建的对象。如何刷新DOM对象列表?

时间:2013-08-21 10:48:24

标签: javascript jquery

在我的应用中,当用户点击按钮时,浏览器会创建新对象。例如:

$("#div1 svg").append("<ellipse id='#obj0' class='svgobjects'>");

有效。它出现在Chrome开发工具中。 然后我想用一些数据设置椭圆的大小。

if (!$(ID).length > 0) {
        console.log("Div doesn't exist");
} else {
        console.log("I found it");
}
$(ID).attr("cx", data["startX"]).attr("cy", data["startY"]).attr("rx", this.rx).attr("ry", this.ry).attr("fill", data["color"]);

所有这些变量都可以。所有这些都包含正确的数据。但在控制台出现:“Div不存在”。

问题是:这个div在那里并且具有与“ID”变量(“#obj0”)相同的id。但是尽管所有的jquery sais都不存在div。

2 个答案:

答案 0 :(得分:2)

如果您使用其ID选择ellipse元素,请务必使用有效值正确设置它。

使用CSS(因此也使用jQuery),您可以使用#obj0来选择ID为obj0的元素,但是您没有这样的元素,因为您拥有的元素是ID定义为#obj0,这是一个无效值。

要解决您的问题,请替换以下内容:

$("#div1 svg").append("<ellipse id='#obj0' class='svgobjects'>");

有了这个:

$("#div1 svg").append("<ellipse id='obj0' class='svgobjects'>");

修改:

在HTML5中,ID #obj0实际上有效(请参阅http://www.w3.org/TR/html-markup/global-attributes.html),但在这种情况下,您必须使用$("#\#obj0")而不是$("#obj0")选择它。

答案 1 :(得分:0)

如果您使用HTML5

id="#obj0" is valid ,

然后您必须选择$("#\#obj0")

如果您不使用HTML5,则应obj0代替'#obj0'