当jQuery可以排序时,避免使用元素进行选择

时间:2009-11-18 08:24:11

标签: jquery jquery-ui-sortable draggable

我有一个功能,让我在点击时选择一个元素。它是这样的:

$('ul.grid li').click(function() {
    var input = $(this).find('input.select-state:first');
    var value = input.attr('value');
    if (value == '0') {
        $(this).addClass('active');
        input.attr('value', '1');
    } else {
        $(this).removeClass('active');
        input.attr('value', '0');
    }
});

当我添加jQuery sortable时,当我删除它时,会立即选择被删除的元素,因为此函数会运行。解决这个问题的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

从未使用过jQuery Sortable,但您可以将.stopImmediatePropagation()的调用添加到调用sortable的函数中吗?

答案 1 :(得分:0)

您可以在拖动开始时在元素上设置一个标志,如下所示:

$(document).ready(function(){
    $('ul.grid').sortable({
        start: function(event, ui){
            ui.item.data('dragged', true);
        }
    });
});

然后在点击功能中检查并翻转该标志,如下所示:

$('ul.grid li').click(function() {
    if($(this).data('dragged')){
        $(this).data('dragged', false);
    } else {
        var input = $(this).find('input.select-state:first');
        var value = input.attr('value');
        if (value == '0') {
            $(this).addClass('active');
            input.attr('value', '1');
        } else {
            $(this).removeClass('active');
            input.attr('value', '0');
        }
    }
});