代码之家  ›  专栏  ›  技术社区  ›  Paul

jQuery Sortable获取新的父ID?

  •  0
  • Paul  · 技术社区  · 6 年前

    我今天和sortable一起工作,有点卡住了。

    我正在尝试获取新的父节点ID,以便在ajax请求中使用。

    编辑:我现在让它记录父级,但它只是在数组中为所有父级添加相同的父级ID。

    $('.portlet-row').sortable({
        connectWith: ".portlet-row",
        update: function(e, ui) {
      
        var imageids_arr = [];
        var listids_arr = [];
    
        $('.portlet').each(function(){
           var id = $(this).attr('id');
           var split_id = id.split("_");
           imageids_arr.push(split_id[1]);   
    
           var ids = $(e.target).attr('id');
           var split_ids = ids.split("_");
           listids_arr.push(split_ids[1]);   
        });
    
        $.ajax({
          url: 'sorts.php',
          type: 'post',
          data: {imageids:imageids_arr, listids: listids_arr},
          success: function(response){ }
        });
    
        }   
    
    });
    
    $('.portlet-row').disableSelection();
    
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   Swati lk_ayyagari    6 年前

    我不知道我是否理解正确,但当你迭代时 .portlet div你需要用这个来获取 .portlet-row 里面的价值。您可以使用 $(this).find('.portlet-row').attr('id') 为了得到这个价值。此外,您可以直接创建两个不同的数组,而不是创建两个 JSON Array 具有 listid imageid 一起传递给你的 php .

    演示代码 :

    $('.portlet-row').sortable({
      connectWith: ".portlet-row",
      update: function(e, ui) {
        var imageids_arr = [];
        var listids_arr = [];
        var datas = new Array()
        $('.portlet').each(function() {
          item = {}; //new object array
          var id = $(this).attr('id');
          var split_id = id.split("_");
          imageids_arr.push(split_id[1]);
          item["imageid"] = split_id[1]; //add object
          //current portlet div->under that find porlet row-> id
          var ids = $(this).find('.portlet-row').attr('id');
          var split_ids = ids.split("_");
          listids_arr.push(split_ids[1]);
          item["listid"] = split_ids[1]; //add object
          datas.push(item); //add to array object
    
        });
        console.log(imageids_arr)
        console.log(listids_arr)
        console.log(datas)
    
      }
    
    });
    
    $('.portlet-row').disableSelection();
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <div class="portlet" id="port_1">
      <div id="chart_7" class="portlet-row ui-sortable">
        <p>Some text</p>
      </div>
    </div>
    <div class="portlet" id="port_2">
      <div id="chart_8" class="portlet-row ui-sortable">
        <p>Some text1</p>
      </div>
    </div>
    <div class="portlet" id="port_3">
      <div id="chart_9" class="portlet-row ui-sortable">
        <p>Some text11</p>
      </div>
    </div>
    <div class="portlet" id="port_4">
      <div id="chart_10" class="portlet-row ui-sortable">
        <p>Some text111</p>
      </div>
    </div>
    推荐文章