Как заставить сортировку работать с несколькими разделами с одинаковым именем класса

#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:

  1. $("#sortable") будут выбраны все теги с идентификатором, равным «сортируемому», А НЕ классы.
  2. Проверьте свою консоль. Вы получаете какие-либо ошибки, касающиеся .sortable ?
  3. Имя класса ‘#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. Набирал ответ, когда он ответил!