У меня проблемы с сортировкой 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.
Есть идеи?