【问题标题】:How to make sortable work with multi divs with the same class name如何使用具有相同类名的多个 div 进行排序工作
【发布时间】:2019-03-16 17:57:16
【问题描述】:

如何使这种可排序的工作适用于具有相同类名#sortable 的多个 div。

这是一个例子

更新

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

【问题讨论】:

    标签: javascript jquery jquery-ui-sortable


    【解决方案1】:
    1. $("#sortable") 将选择 id 等于“可排序”的所有标签,而不是类。
    2. 检查您的控制台。您是否收到有关 .sortable 的任何错误信息?
    3. 类名“#sortable”无效。将其更改为“可排序”并将选择器更改为 $(".sortable") 。现在可以用了吗?

    编辑 准确地说,(3) 在 HTML5 中有效。一个更好的做法是用字母开始你的类/ id 名称。如果您必须使用“#”,则必须在 jQ 选择器中对其进行转义。这是不必要的混淆。

    【讨论】:

    • 感谢您的回答@JohnPan,请您在我的代码中给我一个答案,以便我理解,我还在学习。
    • id 代表标识。两个元素具有相同的 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_order&" + order
          });
          }});
          $(".sortable").disableSelection();
          });
          </script>
    

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

    【讨论】:

    • 谢谢,是的,我按照@JohnPan 提到的方法使用了相同的解决方案。
    • 他回复时正在输入答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多