我的jquery可排序插件有问题。实际上,我有使用手风琴和可分类的项目(问题)。
我使用sortable的更新事件来显示每个问题手风琴的额外内容。
但我的问题是,在对问题进行排序后,我移动的手风琴会自动打开。
以下是一个重现问题的简单示例:http://jsfiddle.net/JwzH2/1/
尝试对问题进行排序,你会看到手风琴打开(有时它可能正常工作,所以再试一次)。
有人知道如何解决它吗?
编辑:Fosco给了我一个部分工作的解决方案,但仍然存在问题=>它不适用于动态添加的元素(请参阅我对其答案的评论)。
此外,我仍然惊讶地看到代码在没有这一行的情况下工作: $('.hidden-content', question).show();
。实际上,无论有没有这条线,事件传播应该是相同的
答案 0 :(得分:7)
我相信你的答案就在jQuery UI的示例代码中:http://jqueryui.com/demos/accordion/sortable.html
$(function() {
var stop = false;
$( "#accordion h3" ).click(function( event ) {
if ( stop ) {
event.stopImmediatePropagation();
event.preventDefault();
stop = false;
}
});
$( "#accordion" )
.accordion({
header: "> div > h3"
})
.sortable({
axis: "y",
handle: "h3",
stop: function() {
stop = true;
}
});
});
</script>
请注意stop
变量的使用,以及排序机制和点击处理程序如何捕获和操纵它。
编辑:今天早上我花了一些时间来处理你的动态内容问题,这就是我想出来的。添加新项目后,我会销毁并重新设置手风琴和相应的点击处理程序。我将点击处理程序设置和手风琴设置移动到函数中,并在最初添加新项目时调用它们。它发生得太快,我没有看到任何闪烁或视觉问题,但你的里程可能会有所不同。在这里试一试:http://jsfiddle.net/JwzH2/41/