На моей странице загружаются динамически фотографии с помощью ajax. Для элементов и функций я пытаюсь использовать делегирование событий. К сожалению для UI sortable я был вынужден использовать функцию ссылки
HTML, динамически генерируемый из идентификатора
<div class="row sortable">
<div class="col-md-2 thumb" id="photo_1">
<span class="thumbnail">
<img class="img-responsive" src="img_1.jpg" alt="" />
<input type="checkbox" name="photo[]" value="1" />
</span>
</div>
<div class="col-md-2 thumb" id="photo_2">
<span class="thumbnail">
<img class="img-responsive" src="img_2.jpg" alt="" />
<input type="checkbox" name="photo[]" value="2" />
</span>
</div>
<div class="col-md-2 thumb" id="photo_3">
<span class="thumbnail">
<img class="img-responsive" src="img_3.jpg" alt="" />
<input type="checkbox" name="photo[]" value="3" />
</span>
</div>
</div>
MY JS
var id = "something";
$.ajax({
type: "POST",
url: photo.php,
data: { id : id },
dataType: 'html',
success: function(data) {
$('#photo-container').html(data);
},
complete: function() {
callSortable(); // Function referencing
}
});
// DELEGATE
$(document).on('change', 'input[name="photo[]"]', function() {
// do something
});
function callSortable() {
$('.sortable').sortable({
items : 'div:not(.unsortable)',
delay : 150,
revert : true,
scroll : false,
update: function(e, ui) {
//save position
}
});
}
Как я могу использовать делегирование событий с пользовательским интерфейсом в моем сценарии? Спасибо
JQuery UI Sortable Widget имеет событие sortupdate
, попробуйте делегировать так:
$(document).on('sortupdate', '.sortable', function () {
console.log("Sorting updated");
});
Пример: http://jsfiddle.net/2fzLo6gr/