DOM事件不会在off-DOM元素中冒泡

时间:2013-10-14 14:15:14

标签: javascript jquery html dom javascript-events

我有一个DOM元素尚未在DOM中,我想触发一个DOM事件。

事件没有冒出来。但是使用jQuery,确实如此。这对我来说似乎很奇怪。

此行为在 Safari和Chrome 中可重现(在Firefox中它可以正常工作 - 事件冒泡):

var log = function(event) {console.log('Clicked on div', event);};

// Create DOM element.
var div = document.createElement('div');
// Don't append it to DOM. Though it works if we append it there.
// document.body.appendChild(div);
div.innerHTML = '<a id="outer"><span class="inner">yo</span></a>';

// Does not work.
div.addEventListener('click', log);
div.querySelector('#outer').click();

// Works!?
$(div).on('click', log);
$(div).find('#outer').click();

jQuery是否实现了自定义事件冒泡策略?浏览器在这里出错了吗?

修改:创建了a bug

1 个答案:

答案 0 :(得分:0)

我认为它与

有关
$(div).find('#outer').click();

请注意,如果你选择

$("#outer").click();

它不起作用。所以我的赌注是JQ也会触发div元素的点击,而不是用DOM冒泡。