onClick事件与被单击的元素一起被父元素捕获
onClick event is being caught by the parent element along with the clicked element
我有一个div
,里面有一些元素。
父div
通过使用onClick
具有test()
功能。在父div内部有一个quickView()
函数,通过使用onClick
。
现在,当我点击quickView()
函数,test()
函数触发。
<div onClick="test();" class="product-inner">
<h5 class="product-title height-40-px">
title
</p>
</h5>
<hr class="mt8 mb8">
<div class="product-meta">
<ul class="product-price-list">
<li><span class="product-save dir-to-right"><strong>7500</strong></span>
</li>
<li><span class="product-old-price dir-to-right">120,000</span>
</li>
<li><span class="product-price">%95</span>
</li>
</ul>
<hr class="mt0 mb0 mr6 hr-blue">
<div class="col-md-12 mt10">
<span class="col-md-6">
۹ <i class="fa fa-users"></i>
</span>
<span class="col-md-6">
<p class="font-size-12 display-inline">
zone
<i class="fa fa-map-marker"></i>
</p>
</span>
</div>
<ul class="product-actions-list mt35">
<li><a data-original-title="add cart" class="btn btn-cart btn-sm popup-text" href="#product-quick-view-add-to-cart" onclick="quickView(18730);" data-effect="mfp-move-from-top" data-toggle="tooltip" data-placement="top" title="">cart <i class="fa fa-shopping-cart"></i></a>
</li><li><a href="" class="btn btn-buy btn-sm">details <i class="fa fa-eye"></i></a>
</li>
</ul>
</div>
</div>
使用event.stopPropagation()
来防止点击事件传播到父事件。这就是你如何使用它。
注: IE支持e.cancelBubble
而不是e.stopPropagation()
function quickView(value, e) {
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
console.log(value);
}
function test() {
console.log('test Fired');
}
<div onClick="test();" class="product-inner">
<h5 class="product-title height-40-px">
title
</p>
</h5>
<hr class="mt8 mb8">
<div class="product-meta">
<ul class="product-price-list">
<li><span class="product-save dir-to-right"><strong>7500</strong></span>
</li>
<li><span class="product-old-price dir-to-right">120,000</span>
</li>
<li><span class="product-price">%95</span>
</li>
</ul>
<hr class="mt0 mb0 mr6 hr-blue">
<div class="col-md-12 mt10">
<span class="col-md-6">
۹ <i class="fa fa-users"></i>
</span>
<span class="col-md-6">
<p class="font-size-12 display-inline">
zone
<i class="fa fa-map-marker"></i>
</p>
</span>
</div>
<ul class="product-actions-list mt35">
<li><a data-original-title="add cart" class="btn btn-cart btn-sm popup-text" href="#product-quick-view-add-to-cart" onclick="quickView(18730, event); " data-effect="mfp-move-from-top" data-toggle="tooltip" data-placement="top" title="">cart <i class="fa fa-shopping-cart"></i></a>
</li><li><a href="" class="btn btn-buy btn-sm">details <i class="fa fa-eye"></i></a>
</li>
</ul>
</div>
</div>
Click事件从被单击的内部元素向上冒泡到文档根,遍历被单击元素的所有父元素。为了阻止它向上传播,您应该使用- event.stopPropagation();
这就是事件冒泡的工作原理。首先,click事件在实际被单击的元素上触发(a.b.tn)。(在您的例子中是Btn-cart),然后向上移动并使用test()到达父div。你可以通过向quickView()函数传递一个事件并调用event. stoppropagation()来阻止事件的进一步传播。然后,你的HTML应该像这样:
<a class="btn btn-cart btn-sm popup-text" onclick="quickView(event, 18730);">Cart</a>
和JavaScript函数:
function quickView(event, number) {
event.stopPropagation();
console.log(number) // Do some stuff with the passed ID.
}
相关文章:
- Jquery 如何指定哪个可丢弃对象应与嵌套的可放置元素一起使用
- 如何将键控事件与 JQuery-ui 可拖动元素一起使用
- Chrome 中的 Range.setStartAfter() 无法与跨度或内联元素一起正常工作
- 如何将form_for与非输入元素一起使用
- 如何使jquery函数与动态变化的元素一起工作
- 如何使JQuery同位素与改变高度的元素一起工作
- 当文本与元素一起悬停时发生更改时,onclick事件的Grab Text
- 如何将jQuery fadeIn与使用.after创建的元素一起使用
- 重力点无法与其他元素一起正常工作
- ie9 innerHTML不能与datatable .js创建的select元素一起工作
- 按键事件如何与不带任何焦点的元素一起工作?
- 不需要的SVGAnimatedString与SVG元素一起创建
- 如何使每个函数与动态添加的元素一起工作
- Jquery函数还应该与其他元素一起工作
- 我的click事件不能与新的li元素一起工作
- onClick事件与被单击的元素一起被父元素捕获
- 是否可以将findbar与非浏览器元素一起使用
- mootools:使ajax回调与单击的元素一起工作
- 将jquery中的下一个元素和所选元素一起删除
- 将元素附加到 - 将 while 与动态添加的元素一起使用