jQuery高级dom导航

时间:2017-06-13 09:14:35

标签: jquery html dom selector

情况是用javascript更新购物车。事件来自更改选项名称="变体-1和#34;的项目变化。有很多.shop项目。如果您从选择名称的更改中获得$(this),如何处理具有data-product-id的输入=" variation-1" =

<div class="product-tools shop-item">
    <div class="count-input">
        <a class="incr-btn" data-action="decrease" href="#">–</a>
        <input class="quantity" type="text" data-product-id="7" value="3">
        <a class="incr-btn" data-action="increase" href="#">+</a>
    </div><!-- .count-input -->                         
    <div class="form-element">
        <select name="variation-1" class="form-control form-control-sm variation-select" data-toggle="tooltip" title="" data-original-title="color">
            <option value="blue">blue</option>                        
            <option value="red" selected="">red</option>   
        </select>
    </div>
    <div class="form-element">
        <select name="variation-2" class="form-control form-control-sm variation-select" data-toggle="tooltip" title="" data-original-title="size">
            <option value="S">S</option>                        
            <option value="M">M</option>                        
            <option value="L">L</option>                        
            <option value="XL" selected="">XL</option>                        
            <option value="XXL">XXL</option>               
        </select>
    </div>
</div>

1 个答案:

答案 0 :(得分:2)

这应该从相关输入中获取产品ID。它遍历到封闭的“shop-item”div,然后在其中搜索“quantity”类的输入,该类具有product-it数据属性:

var productID = $(this).closest(".shop-item").find(".quantity").data("product-id");

或者,如果要查找具有“data-product-id”属性的实际元素,可以执行以下注释中建议的内容:

var input = $(this).closest(".shop-item").find("[data-product-id]");