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

标签 javascript html jquery dom jquery-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

最佳答案

我觉得有关系

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

注意如果你去

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

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

关于javascript - DOM 事件不会在 off-DOM 元素中冒泡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19362309/

相关文章:

javascript - Grunt + Concat + Angularjs

html - Polymer 1.0 a/自定义元素下工具栏点击bug

html - CSS 类将应用于不同的 div 元素和不同的按钮元素

javascript - 在 HTML Canvas 中重绘对象时出现问题

javascript - jQuery Mobile slider 根据其值触发不同的事件

javascript - 使用 jQuery 将一个标签替换为另一个标签

javascript - 基于按钮的div显示

javascript - 通过 execute_script 调用的 scrollBy() 不适用于使用 Selenium 和 Python 的 chrome 商店页面

javascript - 为什么 D3.js 可以选择 jQuery 不能选择的元素?

javascript - 当单击 1 个表单中的 2 个提交按钮中的 1 个时,如何运行脚本?