还有其他方法可以使用Jquery的nextUntil表达式确定父对象是否有孩子吗?

时间:2019-04-16 05:56:46

标签: jquery

我有问题,如何将jquery的untilNext表达式插入数据库?我有父项和有孩子的父项。

在这里,正如您在图片上所能看到的,我在其项目菜单中有客户愿望清单的插图,

第一个父项没有子项,

第二个父项包含子项

Output

因此,现在如果父项没有子项,则插入项将出现在此表上。

First Insert

第二个逻辑插入是,如果父项具有子项, 家长将在此处插入

first insert of parent

父母的子女将插入此表

second insert if has a children

这是我的功能,用于将商品追加到插图中的表格中

  //function for getting the data from search product by clicking to the table row
  $('.append_customer_price_order').hide();
    $("tr#productClicked").click(function () {

          var menu_name = $(this).closest("tr").find(".menu_name").text();
          var menu_price = $(this).closest("tr").find(".menu_price").text();
          var chain_id =  $(this).closest("tr").find(".chain_id").text();
          var menu_image = $(this).closest("tr").find(".menu_image").attr('src');



          swal({
          title: "Are you sure to add " + menu_name + " ?",
          text: "Once you will add it will automatically send to the cart",
          icon: "warning",
          buttons: true,
          dangerMode: true,
        })
        .then((willInsert) => {
          if (willInsert) {
            swal("Successfully Added to your form.", {
              icon: "success",
            });

           $('.append_customer_price_order').show();

           // $('.append_customer_noun_order').append(menu_name);
           // $('.append_customer_price_order').append(menu_price);

           if(chain_id == 0) {

               $("tbody#tbody_noun_chaining_order").
                  append("<tr class='condimentParent' style='background-color:'black !important',color:'white !important' '><td></td><td>"+menu_name+"</td><td>"+menu_price+"</td><td><button class='removeorderWithOutCondi btn btn-danger form-control'><i class='far fa-trash-alt'></i></button></td></tr>");

                 $('button.removeorderWithOutCondi').click(function(){

                    $(this).parent().parent().remove();
                 })
           }
           else
           {
              $.ajax({
                url:'/get_noun_group_combination',
                type:'get',
                data:{chain_id:chain_id},
                success:function(response){



                   var noun_chaining = response[0].noun_chaining;

                   $("tbody#tbody_noun_chaining_order").
                  append("<tr class='condimentParent' style='background-color:'black !important',color:'white !important' '><td></td><td>"+menu_name+"</td><td>"+menu_price+"</td><td><button class='removeorderWithCondi btn btn-danger form-control'><i class='far fa-trash-alt'></i></button></td></tr>");

                   $.each(noun_chaining, function (index, el) {

                    var stringify_noun_chaining = jQuery.parseJSON(JSON.stringify(el));

                    // console.log(stringify['menu_cat_image']);
                    var Qty = stringify_noun_chaining['Qty'];
                    var Condiments = stringify_noun_chaining['Condiments'];
                    var Price = stringify_noun_chaining['Price'];
                    var allow_to_open_condiments = stringify_noun_chaining['allow_to_open_condiments'];

                    var condiments_section_id = stringify_noun_chaining['condiments_section_id'];


                     $("tbody#tbody_noun_chaining_order").
                    append("<tr class='editCondiments'>\
                    <td class='condiments_order_quantity'>"+Qty+"</td>\
                    <td>*"+Condiments+"</td><td class='total'>"+Price+"</td>\
                    <td class='allow_to_open_condiments_conditional' style='display:none;'>"+allow_to_open_condiments+"</td>\
                    <td class='condi_section_id' style='display:none;'>"+condiments_section_id+"</td>\
                    </tr>");


                  })





                   $('button.removeorderWithCondi').click(function(){

                    $parent = $(this).closest(".condimentParent");
                    $parent.add($parent.nextUntil(".condimentParent")).remove();

                  });







                },
                error:function(response){
                  console.log(response);
                }
              });
           }


          $('.tbody_noun_chaining_order').html('');

        }
      });

    });

我在数据库中插入项目的功能。

     $(document).ready(function () {
    $('#add_to_cart').click(function () {

      var customer_id = $('#hidden_customer_id').val();

      $('#noun_chaining_order').find('tr.editCondiments').each(function (i) {
        var $tds = $(this).find('td'),

          Qty = $tds.eq(0).text(),
          Item = $tds.eq(1).text(),
          Cost = $tds.eq(2).text();
          alert(Item);
      });
  });

});

1 个答案:

答案 0 :(得分:0)

$("table").on("click", ".count", function() {
  var parent = $(this).closest(".parent");
  console.log(parent.nextUntil(".parent").length + " children");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tr class="parent">
    <td>This is parent #1</td>
    <td><button class="count">Count</button></td>
  </tr>
  <tr class="child">
    <td>This is a child of parent #1</td>
    <td>Column 2</td>
  </tr>
  <tr class="child">
    <td>This is another child of parent #1</td>
    <td>Column 2</td>
  </tr>
  <tr class="parent">
    <td>This is parent #2</td>
    <td><button class="count">Click</button></td>
  </tr>
  <tr class="parent">
    <td>This is parent #3</td>
    <td><button class="count">Click</button></td>
  </tr>
  <tr class="child">
    <td>This is a child of parent #3</td>
    <td>Column 2</td>
  </tr>
</table>