有没有办法使用jquery的next和next表达式来获取相应的项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法使用jquery的next和next表达式来获取相应的项目相关的知识,希望对你有一定的参考价值。

我有关于获得正确的相应父项和父项的模块,因此为了获得每个项和子项,我使用jquery的next和nextAll表达式。我现在将与你们分享我的输出,以及我想要的输出。

这是我的输出(这个输出错了)

Output wrong

输出应该看起来像这个output wanted

我的网络应用中的输出。正如你在我突出显示的项目上看到的那样没有孩子但是在我的控制台日志中,当我提交按钮时,突出显示的项目重复了第一个订购项目的输出

要将项目附加到该列表,我使用此代码。

    $("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",
        });



       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 class='total'>"+menu_price+"</td><td><button class='removeorderWithOutCondi btn btn-danger form-control'><i class='far fa-trash-alt'></i></button></td></tr>");

       }
       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 class='total'>"+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>");


              })

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

    }
  });

Web app

这是我将项目插入数据库时​​的添加到购物车按钮。

    $('button#add_to_cart').on('click',function () {

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

      $parent = $(this).closest("tr.condimentParent");


      var menu= $('#noun_chaining_order').find('tr.condimentParent');

          menu.next('.condimentParent').add(menu).each(function(){


            if(menu.length > 0 ) {

              var $tds_menu = $(this).find("td");

                    Qty_menu = $tds_menu.eq(0).text(),
                    Item_menu = $tds_menu.eq(1).text(),
                    Price_menu = $tds_menu.eq(2).text();

                    console.log(Item_menu);



                var condiments= $('#noun_chaining_order').find('tr.editCondiments');

                  condiments.nextAll('.editCondiments').add(condiments).each(function(){

                    var $tds_condiments = $(this).find("td");
                    Qty_condiments = $tds_condiments.eq(0).text(),
                    Item_condiments = $tds_condiments.eq(1).text(),
                    Price_condiments = $tds_condiments.eq(2).text();

                    console.log(Item_condiments);


                });
            }




      });

});
答案

为了解决我的问题,我使用多个添加

    $('button#add_to_cart').on('click',function () {

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

      $parent = $(this).closest("tr.condimentParent");

      var condiments= $('#noun_chaining_order').find('tr.editCondiments');
      var menu= $('#noun_chaining_order').find('tr.condimentParent');

          menu.next('.condimentParent').add(menu).add(condiments).each(function(){

              var $tds_menu = $(this).find("td");

              Qty_menu = $tds_menu.eq(0).text(),
              Item_menu = $tds_menu.eq(1).text(),
              Price_menu = $tds_menu.eq(2).text();

              console.log(Item_menu);



              //   condiments.nextAll('.editCondiments').add(condiments).each(function(){

              //     var $tds_condiments = $(this).find("td");
              //     Qty_condiments = $tds_condiments.eq(0).text(),
              //     Item_condiments = $tds_condiments.eq(1).text(),
              //     Price_condiments = $tds_condiments.eq(2).text();

              //     console.log(Item_condiments);


              // });

          });



});

以上是关于有没有办法使用jquery的next和next表达式来获取相应的项目的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将 Materialize CDN 与 Next.js 一起使用?

为什么jquery .next和.toggle不能在这里工作

jquery跳过列表项

jQuery next() 和 $(this)

有没有办法在请求正文中为 Next-Auth 中的令牌调用发送客户端凭据?

简单的 jquery $(this).next() 在 IE 中没有表现