问题描述
|
在JavaScript中,如果我将一个具有ID的孩子附加到另一个地方,则该孩子将从他们当前所在的原始位置删除。
在javascript中,我有一个事件,可以在函数中使用此事件来获取选择器
$(\'.\').event(function(){
this
});
这被传递给另一个函数,它们可以正常工作。现在我要传递克隆而不是对象。请记住,这没有ID。
旧代码通过将this
传递为DoSomething(this)
来工作
如果我使用jQueryclone
进行克隆,则我拥有jQuery对象。那么在使用克隆时,如何获得对ѭ1的引用而不是jQuery对象?
var clone = $(this).clone() // this is jQuery object.
//how do I get this out of clone?
解决方法
如果我将一个具有ID的孩子附加到另一个地方,则将其从他们当前所在的原始位置删除。
是的,但是对于没有“ 6”属性的子节点也是如此。 ѭ6只是您获得Element节点对象的引用的一种简单方法。它对DOM克隆行为的插入没有影响。
在javascript中,我有一个事件,可以在函数内使用
this
来获取选择器
不,事件处理程序中的“ 1”为您提供DOM Element节点对象,而不是选择器字符串。可以使用$(node)
将一个Node转换为它周围的jQuery包装,而使用$(selector)
将一个选择器转换为匹配节点列表上的jQuery包装,但是除了jQuery API中的这种重载之外,它们是完全不同的动物。
要将Node从jQuery包装器中拉出,可以使用get()
方法或简单的类似于数组的访问:
var clonedNode= $(this).clone()[0];
var clonedNode= $(this).clone().get(0);
去尝尝。 (get()
具有一些此处不需要的其他功能。)
要获得用于创建jQuery包装器的选择器,可以使用selector
属性,但是如果包装器是通过节点对象($(this)
)而不是选择器创建的,则不会返回任何内容。
, $(this).clone().get(0)
。这将从jQUery对象获得第一个匹配的DOMElement。
, 要从jQuery对象获取DOMElement对象,请使用get(0):
var clone = $(this).clone(); // this is jQuery object.
var el = clone.get(0); // this is DOMElement object