在jquery ui中使用connect with property时,如何防止第二次或更多更新函数?

时间:2011-06-30 05:46:37

标签: jquery jquery-ui

$(document).ready(function()
{
    $('.sortable').sortable(
    {
         connectWith:'.sortable',
         update: function()
         {
              alert('sorted');
         }
    });
});
<ul class='sortable'>
   <li>A</li>
   <li>B</li>
   <li>C</li>
</ul>
<ul class='sortable'>
   <li>1</li>
   <li>2</li>
   <li>3</li>
</ul>

好的,当我用UL排序时,这个警报两次。我需要一次警报,甚至用UL或Li分类。

2 个答案:

答案 0 :(得分:0)

似乎一切正常:当您在单个UL中对LI进行排序时,您会收到一个警报。但是,如果将LI从一个UL移动到另一个UL,则会收到两个警报,因为每个可排序都会更新。首先丢失一个LI,然后第二个接收它:http://jsfiddle.net/CoolEsh/Kuwzq/1/

如果只有在其中一个列表更新后才需要提醒,请执行下一步:

$(document).ready(function()
{
    $('.sortable1').sortable(
    {
         connectWith:'.sortable2'
    });

    $('.sortable2').sortable(
    {
         connectWith:'.sortable1',
         update: function()
         {
              alert('sorted');
         }
    });
});
<ul class='sortable1'>
   <li>A</li>
   <li>B</li>
   <li>C</li>
</ul>
<ul class='sortable2'>
   <li>1</li>
   <li>2</li>
   <li>3</li>
</ul>

答案 1 :(得分:0)

我找到了办法。

$updated = false;
$('.sortable').sortable(
{
    connectWith: '.sortable',
    stop: function()
    {
        if($updated)
        {
                alert('Updated!');
        }
        $updated = false;
    },
    update: function(e, ui)
    {
        $updated = true;
    }
});