我的先决条件是,我只使用一个DOM,只使用DOM getElementById
或querySelector
或event
引用。在这种情况下,使用以下条件是否安全
if (document.body === event.currentTarget) { }
检查事件是否已冒泡到文档正文中?
我知道这不适用于克隆对象。但我不会自己克隆任何物体。 DOM API是否在任何地方克隆对象?
答案 0 :(得分:4)
是的,这是安全的。 DOM对象不会被浏览器取代,它们是相当稳定的对象。
我自己经常使用WeakMaps将数据绑定到没有问题的元素(example)。
答案 1 :(得分:0)
这不是一个直接的答案,因为它已经被给出,而是一个提醒,以防你在项目中使用jQ。对于阅读此内容的人来说,这可能会有所帮助,因为它的编写时间更短,而且使用方式也更强大。
只需注意,在jQuery中,从1.6开始就可以使用is()。 让我们说你有:
<div id="parent">
<p>drek</p>
<p id="target">kmek</p>
<div>mrr</div>
</div>
您可以将jq选择结果与另一个进行比较:
$("#target").is($("#target"));
您可以将它与DOM对象进行比较:
$("#target").is(document.getElementById("target"));
您可以将它与回调一起使用,因为它不会创建新的jq对象:
$( "#target" ).click(function( event ) {
var target = $( event.target );
if ( target.is( "li" ) ) {
target.css( "background-color", "red" );
}
});
您可以在集合中使用它:(如果它与集合中的至少一个元素匹配,则为true):
$('#parent').children().is("p");
可能还有其他一些巧妙的用途: API description