Javascript 自定义非冒泡事件和jQuery委托处理程序

Javascript 自定义非冒泡事件和jQuery委托处理程序,javascript,jquery,events,Javascript,Jquery,Events,我正在使用jQuery为Tizen开发一个应用程序。Tizen的鼠标事件还有很多需要改进的地方,因此我很不幸地被迫创建自己的事件来修复平台的缺陷。(我已经就此联系了三星,他们暗示可能会在未来的版本中解决这些问题) 出于这个原因,我实施了如下活动: $currentlyHovered.trigger("tizenmouseout"); for(var i = oldStack.length - 1; i > matching; i--) { $(oldStack[i]).trigg

我正在使用jQuery为Tizen开发一个应用程序。Tizen的鼠标事件还有很多需要改进的地方,因此我很不幸地被迫创建自己的事件来修复平台的缺陷。(我已经就此联系了三星,他们暗示可能会在未来的版本中解决这些问题)

出于这个原因,我实施了如下活动:

$currentlyHovered.trigger("tizenmouseout");

for(var i = oldStack.length - 1; i > matching; i--) {
    $(oldStack[i]).triggerHandler("tizenmouseleave");
}

$newlyHovered.trigger("tizenmouseover");


for(var i = newStack.length - 1; i > matching; i--) {
    $(newStack[i]).triggerHandler("tizenmouseenter");
}
我的tizenmouseover/tizenmouseout活动运行良好。我的tizenmouseenter和tizenmouseleave事件主要工作,但它们在与jQuery实时/委托处理程序交互时存在问题

我相信这样做的原因是,诚然,我的tizenmouseenter/tizenmouseleave事件不会出现泡沫。jQuery在以下内容中简要提到了这一点:

在InternetExplorer8和更低版本中,一些事件(如change和submit)不会本机冒泡,但jQuery会将这些事件修补为冒泡并创建一致的跨浏览器行为

它们意味着不冒泡的事件是非标准的,只是过时浏览器的一个功能,而实际上mouseenter/mouseleave事件不冒泡,并且在每个主要的现代浏览器中都受支持。但他们确实提到,他们手动修补这些非冒泡事件,这解释了为什么浏览器的本机mouseenter和mouseleave事件可以工作

无论如何,调用自定义tizenmouseenter或tizenmouseleave事件时不会触发委托处理程序。我无法将我的自定义事件更改为bubble,因为这将在很大程度上违背它们的目的


有没有一种方法可以让我利用jQuery的事件冒泡补丁,使我的自定义事件具有相同的行为?

如果不冒泡,就不能委派。无论如何,我看不出冒泡有什么害处……本机mouseenter和mouseleave事件与委托事件配合得很好。@ArunPJohny本机事件有效的证据:@dandavis mouseleave的要点是,它只在鼠标完全离开元素时才会触发,而不是简单地移动到元素的一个子元素中。基本上,mouseleave在元素上禁用:hover时触发。如果mouseleave冒泡,当鼠标离开元素的任何子元素时,它也会触发,这完全违背了事件的目的。如果鼠标指针出现气泡,也会出现类似的问题。您可以通过
e.target
判断是什么elm触发了事件,并且可以使用
elm.contains()
检查子体。控制台中此页面的示例:
document.body.contains(tabcomplete)
。我意识到进入/离开的简单性,我只是想为你找到一些可行的方法。。。