Here's the JSFiddle.自定義「的mouseenter」功能不火
我試圖讓在Chrome,Firefox等mouseenter
工作中使用下面的函數:
var addMouseenter = (function() {
var contains = function (parent, elem) {
return parent.contains ? parent.contains(elem) :
!!(parent.compareDocumentPosition(elem) & 16);
},
wrap = function (elem, method) {
return function (e) {
if (elem === e.target && !contains(elem, e.relatedTarget)) {
method.call(elem, e);
}
};
};
return function (elem, listener) {
var listener2 = wrap(elem, listener);
elem.addEventListener('mouseover', listener2, false);
};
}());
一切工作正常,直到我跑這個具體情況:
- 元素A具有
mouseenter
聽衆這些自定義的一個 - 元A包含元件B
- B元素是正對着單元A的邊緣
- 您輸入元素A在同一邊緣
我的期望是,mouseover
事件將是對元件B觸發並冒泡到元素A.但是,似乎並非如此。我使用Chrome 13和Firefox 3.6進行測試,結果相同。我搞砸了嗎?
@sdleihssirhc的問題是在這裏的地方:如果(ELEM === e.target &&包含(ELEM,e.relatedTarget) )將其改爲if(elem === e.target &&(e.target!= second))並且它有效。 http://jsfiddle.net/AUc88/ – Zhenya
我剛剛注意到,如果你在綠色方塊上做足夠快速的鼠標移動,它也會觸發警報。不確定是否可以做任何事情,但這可能是一個極端的情況... – Zhenya