Избегайте выбора элемента, когда его отбрасывают с помощью сортируемой jQuery - PullRequest
0 голосов
/ 18 ноября 2009

У меня есть функция, которая позволяет мне выбирать элемент при его нажатии. Это выглядит так:

$('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 голосов
/ 20 ноября 2009

Вы можете установить флаг на элементе при начале перетаскивания, например:

$(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');
        }
    }
});
0 голосов
/ 18 ноября 2009

Никогда не использовал jQuery Sortable, но можете ли вы добавить вызов к .stopImmediatePropagation() в функцию, которая вызывает sortable?

...