动态更改jqueryui手风琴事件处理程序从“单击”到“鼠标悬停”

时间:2010-12-07 20:26:38

标签: javascript jquery jquery-ui accordion javascript-framework

我有一种情况,我希望能够将列表中的项目拖动到手风琴中的目标中。但是,我拖动的项目可能位于另一个面板(未打开的面板)中。

为了促进这一点,我想在拖动开始后动态地将手风琴的事件从点击切换到鼠标悬停。拖动完成后,我将切换回点击。这将让用户将鼠标悬停在关闭的面板上,使其打开,此时他们可以放下该项目。一旦完成,我宁愿他们使用点击打开面板。

这可能吗?我尝试过使用setter:

$(“。selector”)。accordion(“option”,“event”,“mouseover”);

但它似乎并没有实际改变事件。我发现有人提到这可能不受支持。如果没有,有谁知道我会怎么做?

2 个答案:

答案 0 :(得分:0)

您需要在element-drag事件处理程序中使用setter。以下内容应该有效:

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

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

}).mouseup(function(){

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

});

您需要根据具体情况定制选择器。当用户点击可拖动元素时,会触发mousedown事件处理程序,将手风琴的event设置更改为'鼠标悬停';释放点击后,结束拖动,手风琴的event设置将恢复为“点击”。

答案 1 :(得分:0)

好的,看起来这实际上是一个错误。应该在1.9中解决。

JqueryUI bug 6740