pat*_*ick 1 safari jquery-ui 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><a class='url' href='http://www.test2com'>test2</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
和以下脚本:
$(document).ready( function() {
$("#srt").sortable();
$(".url").click( test );
});
function test() {
$(this).text( "done" );
return false;
}>
Run Code Online (Sandbox Code Playgroud)
单击链接会将文本更改为"完成",但拖动它也会将文本更改为"完成".但我不想在排序结束时单击链接.
就像我说的:IE正在运行它应该的功能,它对链接进行排序并且不会触发绑定的单击功能,但是Safari会触发点击...
我怎样才能防止这种情况发生?
编辑:我为此创建了一个jFiddle,所以你可以尝试一下.
实际上我在当前的项目中遇到了同样的问题,而且我真的没有线索,因为一开始工作正常,但是在代码发生一些变化之后就停止工作了.问题是我做了很多改变,我无法想象哪个会造成问题
在你的情况下,Hwr更幸运.你永远不应该在jquery中传递这样的事件处理程序.使用以下语法:
$(".url").click( function(){
test();
});
Run Code Online (Sandbox Code Playgroud)
这有效!
编辑:我很抱歉,它在排序时仍会触发处理程序.两个是解决方案!
最好的:
$("#srt").sortable({ helper: 'clone' });
$(".url").click( function() { $(this).text( "done" ); } );
Run Code Online (Sandbox Code Playgroud)
使用帮助器:'clone'选项避免插件在元素上运行处理程序.(请注意,我将test()主体包含在匿名函数中,否则您将无法使用"this")
Uglier one和导致事件冒泡的问题:
$("#srt").sortable();
$(".url").live('click', function() { $(this).text( "done" ); } );
Run Code Online (Sandbox Code Playgroud)
这只是出于教学原因!因为live()事件不在元素本身中,所以它们不会被sortable触发!
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |