0

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

$('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 可排序时,当我删除它时会立即选择被删除的元素,因为此函数运行。解决这个问题的方法是什么?

谢谢!

4

2 回答 2

0

从来没有使用过 jQuery Sortable,但是你可以添加对.stopImmediatePropagation()调用 sortable 的函数的调用吗?

于 2009-11-18T08:29:28.363 回答
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');
        }
    }
});
于 2009-11-20T18:24:29.133 回答