Jquery ui 排序后点击触发可排序jQuery界面

Jquery ui 排序后点击触发可排序jQuery界面,jquery-ui,safari,click,jquery-ui-sortable,Jquery Ui,Safari,Click,Jquery Ui Sortable,这个问题发生在Safari上。我不明白IE的问题(这是第一次) 我有一个分类表: <ul id='srt'> <li><a class='url' href='http://www.test.com'>test</a></li> <li><a class='url' href='http://www.test1com'>test1</a></li> <li&g

这个问题发生在Safari上。我不明白IE的问题(这是第一次)

我有一个分类表:

<ul id='srt'>
    <li><a class='url' href='http://www.test.com'>test</a></li>
    <li><a class='url' href='http://www.test1com'>test1</a></li>
    <li><a class='url' href='http://www.test2com'>test2</a></li>
</ul>
单击链接会将文本更改为“完成”,但拖动链接也会将文本更改为“完成”。但我不想点击排序末尾的链接

就像我说的:IE正在运行它应该运行的功能,它对链接进行排序,不会触发绑定点击功能,但是Safari会触发点击

我怎样才能防止这种情况发生


编辑:我为这个创建了一个,这样你就可以试一下了。

事实上,我在当前项目中也遇到了同样的问题,我真的没有任何线索,因为一开始工作正常,但在代码中做了一些更改之后,它就停止工作了。问题是我做了很多改变,我无法想象是什么造成了问题

幸运的是,您的Hwr更简单。决不能在jquery中传递这样的事件处理程序。使用以下语法:

$(".url").click( function(){
    test();
});
这管用

编辑: 抱歉,排序时仍会触发处理程序。两个是解决方案

最好的:

$("#srt").sortable({ helper: 'clone' });
$(".url").click( function() { $(this).text( "done" ); } );
使用helper:“clone”选项避免插件在元素上运行处理程序。(请注意,我将test()主体包含在匿名函数中,否则您将无法使用“this”)

更丑陋的一种会导致事件冒泡的问题:

$("#srt").sortable();

$(".url").live('click', function() { $(this).text( "done" ); } );

这只是为了教学的原因!因为live()事件不在元素本身中,所以它们不会被sortable触发

事实上,在我当前的项目中,我也遇到了同样的问题,我真的没有任何线索,因为一开始它工作正常,但在代码中做了一些更改之后,它就停止工作了。问题是我做了很多改变,我无法想象是什么造成了问题

幸运的是,您的Hwr更简单。决不能在jquery中传递这样的事件处理程序。使用以下语法:

$(".url").click( function(){
    test();
});
这管用

编辑: 抱歉,排序时仍会触发处理程序。两个是解决方案

最好的:

$("#srt").sortable({ helper: 'clone' });
$(".url").click( function() { $(this).text( "done" ); } );
使用helper:“clone”选项避免插件在元素上运行处理程序。(请注意,我将test()主体包含在匿名函数中,否则您将无法使用“this”)

更丑陋的一种会导致事件冒泡的问题:

$("#srt").sortable();

$(".url").live('click', function() { $(this).text( "done" ); } );

这只是为了教学的原因!因为live()事件不在元素本身中,所以它们不会被sortable触发

我尝试过这个,但它同时终止了click函数。检查这把小提琴:是的,我很抱歉,因为您通过了test()函数,然后在该函数中使用$(this);但是$(this)不再指向DOM元素,而是指向函数本身!我为我们的问题找到了另一个更优雅的解决方案!检查更新!我遇到了类似的情况,使用助手“克隆”修复了这个问题。我尝试了这个方法,但它同时终止了单击功能。检查这把小提琴:是的,我很抱歉,因为您通过了test()函数,然后在该函数中使用$(this);但是$(this)不再指向DOM元素,而是指向函数本身!我为我们的问题找到了另一个更优雅的解决方案!检查更新!我遇到了类似的情况,使用助手“克隆”修复了这个问题。