我想使用以下方法來使用「打開」選擇過濾器這樣的菜單懸停事件應用到多個列表項:所選元素傳遞給一個名爲click事件處理函數,而無需使用匿名函數
$('.menu').on('mouseenter mouseleave', 'li.parent', hoverHandler);
var hoverHandler = function(event) {
var $el = $(event.currentTarget);
// Do some stuff with the selected element
}
我能夠使用event.currentTarget訪問hoverHandler函數中的選定元素(event.target不起作用,因爲它是最內層的元素('a'元素)。event.delegateTarget是.menu和event。 relatedTarget是html元素)。
問題是,菜單有子菜單,所以一些li.parent項目是在其他li.parents。懸停事件冒泡,因此當我將鼠標懸停在子菜單父項上時,它的懸停事件以及任何相關的祖先也會被觸發。
如果我用'this'使用匿名函數,但不希望這樣做,它會正常工作。
有什麼建議嗎?
更新
下面是完整的代碼的鏈接:http://jsfiddle.net/mdbfLud9/
在進一步測試代碼做工作,如果我刪除超時和stopPropagation但想保持超時
'event.stopPropagation();'應該消除冒泡 – DevlshOne 2014-09-24 00:14:31
爲什麼'this'不能用你當前的設置?你試過了嗎? – PeterKA 2014-09-24 00:18:01
你可以使用.stopPropagation(),如http://jsfiddle.net/arunpjohny/zwpy1oLo/1/ – 2014-09-24 00:18:02