将 jqueryui 手风琴事件处理程序从“单击”动态更改为“鼠标悬停”
Posted
技术标签:
【中文标题】将 jqueryui 手风琴事件处理程序从“单击”动态更改为“鼠标悬停”【英文标题】:Dynamically changing jqueryui accordion event handler from "click" to "mouseover" 【发布时间】:2011-05-21 20:10:45 【问题描述】:我有一种情况,我希望能够将列表中的项目拖到手风琴中的目标中。但是,我拖动到的项目可能在另一个面板中(一个未打开的面板)。
为了方便这一点,我想在拖动开始后将手风琴的事件从单击动态更改为鼠标悬停。拖动完成后,我会切换回点击。这将使用户将鼠标悬停在关闭的面板上,使其打开,此时他们可以放下项目。完成后,我希望他们使用单击来打开面板。
这可能吗?我试过使用 setter:
$( ".selector" ).accordion( "option", "event", 'mouseover' );
但它似乎并没有真正改变事件。我发现有人提到这可能不受支持。如果没有,有人知道我该怎么做吗?
【问题讨论】:
【参考方案1】:您需要在元素拖动事件处理程序中使用设置器。像下面这样的东西应该可以工作:
$('li.draggable').mousedown(function()
$( "div.accordion" ).accordion( "option", "event", 'mouseover' );
).mouseup(function()
$( "div.accordion" ).accordion( "option", "event", 'click' );
);
您需要根据您的具体情况定制选择器。 mousedown
事件处理程序将在用户单击可拖动元素时触发,将手风琴的 event
设置更改为“鼠标悬停”;当点击被释放并结束拖动时,手风琴的event
设置恢复为“点击”。
【讨论】:
感谢您的回复。那是容易的部分。我遇到的问题是手风琴实际上似乎并没有动态地改变它的事件。我可以设置它,值会发生变化,但事件仍然以相同的方式触发。我什至尝试使用 $( "div.accordion" ).accordion( "option", "event", 'mouseover' ); 在 firebug 的命令行中设置它。它不起作用。【参考方案2】:好的,看起来这实际上是一个错误。应该在 1.9 中解决。
JqueryUI bug 6740
【讨论】:
以上是关于将 jqueryui 手风琴事件处理程序从“单击”动态更改为“鼠标悬停”的主要内容,如果未能解决你的问题,请参考以下文章