2010-12-07 43 views
0

我有一種情況,我希望能夠將項目從列表拖到手風琴中的目標中。但是,我正在拖動的項目可能位於另一個面板(未打開的面板)中。將jqueryui手風琴事件處理程序從「click」動態更改爲「mouseover」

爲了促進這一點,我想動態地將手風琴的事件從點擊移動到鼠標懸停,一旦拖動開始。拖動完成後,我會切換回到點擊。這會讓用戶將鼠標懸停在關閉的面板上,使其打開,然後他們可以放下物品。一旦完成,我寧願他們使用點擊打開面板。

這可能嗎?我試過使用setter:

$(「.selector」).accordion(「option」,「event」,'mouseover');

但它似乎並沒有真正改變飛行中的事件。我發現有些人提到這可能不被支持。如果沒有,有人知道我可能會這樣做嗎?

回答

0

您需要在元素拖動事件處理程序中使用setter。類似下面的內容應該可以工作:

$('li.draggable').mousedown(function(){ 

    $("div.accordion").accordion("option", "event", 'mouseover'); 

}).mouseup(function(){ 

    $("div.accordion").accordion("option", "event", 'click'); 

}); 

您需要爲您的特定情況定製選擇器。當用戶點擊可拖動元素時,會觸發mousedown事件處理程序,並將手風琴的event設置更改爲'mouseover'。當點擊被釋放時,結束拖動,手風琴的event設置被恢復爲'點擊'。

+0

感謝您的回覆。這是很容易的部分。我遇到的問題是手風琴實際上並沒有動態改變它的事件。我可以設置它,並且值發生變化,但事件仍然以相同的方式觸發。我甚至試圖用$(「div.accordion」).accordion(「option」,「event」,'mouseover')在firebug的命令行中設置它。 ,它不起作用。 – jjross 2010-12-07 21:07:20