我们说我们有这个HTML代码:
<body>
<div>Some text</div>
<div>Some other text</div>
</body>
我有一个克隆元素或一组元素的克隆函数(我正在尝试制作的东西),我们调用这样的函数:
clone( 'div' );
因此HTML变为:
<body>
<div>Some text</div>
<div>Some other text</div>
<div>Some text</div>
<div>Some other text</div>
</body>
克隆部分很简单,问题是在调用函数之前应用于divs
的任何事件侦听器的继承。我的想法是每次在对象中添加事件监听器时存储事件函数,可能是这样的:
evtList = [
{ elem: elemObject, type: eventType, handler: function },
...
...
];
然后每次我克隆一个节点时,我只检查是否有一个&#34;等于&#34; evtList中的node(元素)所以我可以添加相同的事件监听器。这是真正的问题。当我尝试使用&#34; ===&#34;检查相等性时我每次都弄错了。我做了一些搜索,我发现node.isEqual(cloneNode)
但不再支持了。有没有办法确定两个节点(元素)是否等于&#34;? (当然是纯粹的javascript)
修改
我创建了一个函数isEq()
来检查两个对象是否相等(深),它似乎适用于我尝试的任何文字对象。但是,我注意到一种奇怪的行为:
isEq( $('div')[0], $('div')[0] ); // Returns False
isEq( $('div').first(), $('div').first() ); // Returns True
知道isEq()
为什么会这样做?
答案 0 :(得分:0)
你开始重建jquery的重要部分;这毫无意义。他们已经做到了这一点,并解决了你遇到的所有问题。
DOM-Nodes是常规的Javascript对象。您可以像任何其他JS-Object一样引用它们,并且标识将始终匹配。
所以你必须告诉我们出错的部分,以获得帮助。