Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryonclick函数在整个div上工作,而不仅仅是在按钮上_Javascript_Jquery - Fatal编程技术网

Javascript jqueryonclick函数在整个div上工作,而不仅仅是在按钮上

Javascript jqueryonclick函数在整个div上工作,而不仅仅是在按钮上,javascript,jquery,Javascript,Jquery,我正在开发通用购物车,在主页中,我有几个项目,底部有一个按钮,如果用户单击“添加到购物车”按钮,值将通过jquery存储在购物车中,但问题是,如果用户单击图像,它也会将产品数据存储在购物车中,我只希望添加到购物车按钮起作用,但当用户点击图像它还将值存储在购物车中我如何仅使用按钮附加点击事件我已尝试使用trigger()函数,但无法达到我的目标请帮助我。 这是我的html <div class="col-md-9" > <?php if(isset($produ

我正在开发通用购物车,在主页中,我有几个项目,底部有一个按钮,如果用户单击“添加到购物车”按钮,值将通过jquery存储在购物车中,但问题是,如果用户单击图像,它也会将产品数据存储在购物车中,我只希望添加到购物车按钮起作用,但当用户点击图像它还将值存储在购物车中我如何仅使用按钮附加点击事件我已尝试使用trigger()函数,但无法达到我的目标请帮助我。 这是我的html

<div class="col-md-9" >

        <?php if(isset($products))
        {

            foreach($products as $row)
            {
            ?>
        <div class="row" >
            <div class="col-md-4" >
                <div class="product cartoon">
                    <a href="products/<?=$row->sub_c_id?>/<?=$row->pid?>">
                    <img  class="imgslct" alt="<?=$row->pname?>" height="173" width="144" src="<?php echo base_url(); ?>uploads/<?=$row->product_pic?>">                                        
                    </a>
                    <div class="name">
                    <a href="#" class="pname"><?=$row->pname?></a>
                    </div>
                    <div>
                    <p class="price" data-value="<?=$row->pprice?>">price : <?=$row->pprice?></p>
                    <input type="hidden" class="pid" value="<?=$row->pid;?>">
                    <input type="hidden" class="subcid" value="<?=$row->sub_c_id;?>">

                    <input type="hidden" class="pquan" value="<?=$row->pquantity;?>">
                    <input type="hidden" class="size"  value="<?=$row->size;?>">
                    <input type="hidden" class="color" value="<?=$row->color;?>">
                    <button class="addtocart">Add to cart</button>
                    </div>
                </div>
            </div>  
            <?php 
            }
            } 
            ?>

        </div>


只需更正您拥有的选择器,并更新您正在查找的某些元素的路径即可:

$(document).on('click',"button.addtocart",function(){
    var $btn = $(this);
    var $cartoon =  $(this).closest(".cartoon");
    var pic = $cartoon.find(".imgslct").attr('src');
    var imgdata = $cartoon.find(".pname").text();
    /* and so on */
});
另一个工作流是获取
事件。目标值:

$(document).on('click',".cartoon",function(e){
    if (!$(e.target).hasClass("addtocart")) { return; }
    /* ... */
});

但是第一个更好,因为您没有捕捉到
.cartoon
div上的所有单击。

只需更正您拥有的选择器,并更新您在那里查找的某些元素的路径:

$(document).on('click',"button.addtocart",function(){
    var $btn = $(this);
    var $cartoon =  $(this).closest(".cartoon");
    var pic = $cartoon.find(".imgslct").attr('src');
    var imgdata = $cartoon.find(".pname").text();
    /* and so on */
});
另一个工作流是获取
事件。目标值:

$(document).on('click',".cartoon",function(e){
    if (!$(e.target).hasClass("addtocart")) { return; }
    /* ... */
});
但是第一个更好,因为你没有抓住
.cartoon
div上的所有点击