我有一个不在 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
最佳答案
我觉得有关系
$(div).find('#outer').click();
注意如果你去
$("#outer").click();
它也不起作用。所以我敢打赌,JQ 也会触发 div 元素的点击,而不是与 DOM 冒泡。
关于javascript - DOM 事件不会在 off-DOM 元素中冒泡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19362309/