#javascript #jquery #jquery-ui-sortable
#javascript #jquery #jquery-ui-sortable
Вопрос:
Как заставить эту сортировку работать с несколькими разделами с одинаковым именем класса #sortable.
вот пример
Обновить
<div class="multi-fields" id="sortable">
//something
</div>
<div class="multi-fields" id="sortable">
//another something
</div>
сортируемый
<script type="text/javascript">
var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";
jQuery(document).ready(function($) {
$("#sortable").sortable({
cursor:'move',
opacity: 0.5,
cursor: 'pointer',
axis: 'y',
update:function(event, ui){
var order = $('#sortable').sortable('serialize');
$.ajax({
type: "POST",
url: "<?php echo admin_url( 'admin-ajax.php' ); ?>",
data: "action=update_field_orderamp;" order
});
}});
$("#sortable").disableSelection();
});
</script>
Ответ №1:
$("#sortable")
будут выбраны все теги с идентификатором, равным «сортируемому», А НЕ классы.- Проверьте свою консоль. Вы получаете какие-либо ошибки, касающиеся
.sortable
? - Имя класса ‘#sortable’ недопустимо. Измените его на «sortable» и измените селектор на
$(".sortable")
. Работает ли это сейчас?
РЕДАКТИРОВАТЬ, чтобы быть точным, (3) допустимо в HTML5. Все же лучше начинать имена ваших классов / идентификаторов с буквы. В случае, если вам придется использовать ‘#’, вам придется экранировать его в селекторе jQ. Это ненужная путаница.
Комментарии:
1. Спасибо за ваш ответ @JohnPan, будьте добры, не могли бы вы дать мне ответ в моем коде, чтобы я мог понять, я все еще учусь.
2. id означает идентификацию. Семантически абсолютно неправильно, чтобы два элемента имели одинаковый идентификатор. Итак, в вашем HTML измените ‘id’ на ‘class’, а в селекторе выберите «.sortable». Нажмите F12 и проверьте, есть ли какие-либо ошибки
Ответ №2:
Я думаю, вы могли бы сказать это:
<script type="text/javascript">
var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";
jQuery(document).ready(function($) {
$(".sortable").sortable({
cursor:'move',
opacity: 0.5,
cursor: 'pointer',
axis: 'y',
update:function(event, ui){
var order = $('.sortable').sortable('serialize');
$.ajax({
type: "POST",
url: "<?php echo admin_url( 'admin-ajax.php' ); ?>",
data: "action=update_field_orderamp;" order
});
}});
$(".sortable").disableSelection();
});
</script>
Измените также атрибут id на class и попробуйте!
Комментарии:
1. Спасибо, да, я сделал, как упоминал @ JohnPan, с тем же решением.
2. Набирал ответ, когда он ответил!