JQuery UI сортируемый триггер нажмите - PullRequest
1 голос
/ 03 июня 2011

У меня проблемы с сортировкой jquery ...

Бывает, что после сортировки срабатывает событие щелчка удаляемого элемента, и в довершение всего режим перетаскивания не возвращается, поэтому элемент сохраняет весь стиль строки (например, position: абсолют) созданный плагином!

Я написал похожую ситуацию, которая вызывает проблему:

HTML

<ul>

</ul>

<p class="add">add</p>

JS:

$(document).ready( function() {
    $("ul").sortable();

    $('.add').click(function(){
        var $li = $('<li>').appendTo( $('ul') )
        var $a = $('<a>').attr('href','#').text('test' + ($('a').length + 1) ).appendTo($li)

        $li.bind('click', function(){
            activate($li)
            return false
        })
    })

     $(document).bind('click.outside', function(){
        alert('click outside')
    })
});

function activate($li){
    $('a', $li).text('click');
}

activ () добавляет новые элементы в список и привязывает к ним обработчик кликов. щелчок вызывает «активацию» элемента. проблема в том, что событие click срабатывает даже после сортировки, и я точно не хочу этого!

Проблема не появляется, если вы связываете событие с $ li с помощью live () вне функции добавления:

$(document).ready( function() {
    $("ul").sortable();

    $('.add').click(function(){
        var $li = $('<li>').appendTo( $('ul') )
        var $a = $('<a>').attr('href','#').text('test' + ($('a').length + 1) ).appendTo($li)
        return false;
    })

    $('li').live('click', function(){
        activate($(this))  
        return false;
    })

    $(document).bind('click.outside', function(){
        alert('click outside')
    })
});

function activate($li){
    $('a', $li).text('click');
}

но я не хочу этого делать, поскольку я хочу привязать обработчик событий к документу, чтобы ловить щелчки за пределами элемента, и live (), как вы знаете, не может остановить распространение события, даже с возвращением false.

Есть идеи?

...