jQuery .data()来存储id以供以后访问?或其他方法?

时间:2011-01-25 22:56:25

标签: javascript jquery xhtml

我试图在身体上添加一个div,所以

$('<div>').appendTo(document.body);

然而,我没有给该div一个ID属性关联,所以我可以稍后访问它,我想使用jQuery.data()来访问该div,以便可以对它应用操作。

$('<div>').data('#myid').appendTo(document.body);

现在我如何以后访问它。

3 个答案:

答案 0 :(得分:4)

var later = $('<div>').appendTo(document.body);
// ...
later.actions();

答案 1 :(得分:1)

这听起来很奇怪。即使你在data-expando上设置某种id,你也不知道以后在哪里访问它。您没有对包含该数据属性的元素的引用。

为新创建的节点保留引用的最佳方法是将其存储在本地变量中。

var $newdiv = $('<div>').appendTo(document.body);

推荐您的评论

几乎所有jQuery方法都返回包含jQuery对象的包装集。反过来,这些对象持有对DOM节点的引用。你可以把它想象成一座桥梁。一方面是ECMAland(Javascript),另一方面是DOMland。如果你跨过那个桥来获取DOM节点的引用(这是昂贵的btw),你可以(并且应该!)将该引用存储在ECMAland中。下次要访问DOM node时,您不需要越过桥接器并支付昂贵的费用,您仍然可以使用该引用并可以操作DOM节点。

答案 2 :(得分:0)

如果你必须在没有id的情况下获得它,只需遍历DOM中的每个对象并检查它是否是你的div。

for (var i = 0; i < document.getElementsByTagName("*").length; i++) {
    if ($(document.getElementsByTagName("*")[i]).data("isMyDiv")) {
         var myDiv = $(document.getElementByTagName("*")[i]);
    } 
}

if (myDiv !== undefined) {
   // do stuff
}

或者,您可以编写有效的代码。