如何使用具有相同 class 名称的多个 div 进行排序

How to make sortable work with multi divs with the same class name

如何使具有相同 class 名称的多个 div 可以排序#sortable。

这里有一个例子

update

      <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_order&" + order
        });
    }});
    $("#sortable").disableSelection();
});
</script>
  1. $("#sortable") 将 select 所有 ID 等于 "sortable" 的标签,而不是 class。
  2. 检查你的控制台。您是否收到有关 .sortable 的任何错误?
  3. Class 名称“#sortable”无效。将其更改为 "sortable" 并将 selector 更改为 $(".sortable") 。现在可以用了吗?

编辑 确切地说,(3) 在 HTML5 中有效。更好的做法是以字母开头的 class / id 名称。如果您必须使用“#”,则必须在 jQ selector 中将其转义。这是不必要的混淆。

我想你可能会这样说:

    <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_order&" + order
      });
      }});
      $(".sortable").disableSelection();
      });
      </script>

也将 id 属性更改为 class 并尝试!