2011-08-18 89 views
1

我有一個無序列表裏面的div,當您點擊一個LI項目時,剩下的幻燈片。禁用點擊懸停

<div id="products"> 
<ul> 
<li><a href="">Product 1</a></li> 
<li><a href="">Product 2</a></li> 
<li><a href="">Product 3</a></li> 
</ul> 

問題是,當你點擊一個列表項,離開了DIV幻燈片,因爲它滑動mosue光標下,它會觸發對所有的列表項的翻轉動畫作爲他們推出的。

有沒有一種方法來禁用物品onclick上的JavaScript?

我嘗試這樣做:

$("#products li a").click(function(event){ 
event.preventDefault(); 
}); 
} 

但是,這似乎並沒有工作,因爲動畫仍然在繼續上懸停其他列表項?

+0

可能相關:http://stackoverflow.com /的問題/ 5162084/jquery-javascript-temporary-disable-events-attached-by-addeventlistener-attache – jtbandes

回答

1

您可以從列表中的項目取消綁定懸停事件時,在點擊事件:

$("#products li a").click(function(){ 
    $("#products").find('li').unbind('mouseenter'); 
}); 

這段代碼假定您綁定到mouseenter事件(與mouseover事件相反)。

然後,您可以懸停事件處理程序重新申請到列表中的項目,如果你想在動畫完成與動畫中的調用回調函數後:

$("#products").animate({left: '-=100px'}, function() { 
    $("#products").find('li').bind('mouseenter', function() { 
     //add hover code here 
    }); 
}); 
+0

嗯..我確實綁定到mouseenter:'$ menuItems.bind('mouseenter',function(e){'但由於某種原因,它不是無約束力的? – Yahreen

+0

任何機會,你可以設置你的代碼jsfiddle? – Jasper

+0

我明白了!寫了錯誤的東西。謝謝! – Yahreen

0

你可以在全局範圍內設置一個變量到true在onclick和在onmouseover包裝整個東西在if (!varSetOnClick) {?不是最優雅的解決方案,但它的工作...