onClick事件被父元素和被点击的元素捕获

时间:2016-09-13 06:25:11

标签: javascript jquery

我有一个div,里面有一些元素。

我的父div使用test()具有onClick功能。 在父级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">
      ۹&nbsp;<i class="fa fa-users"></i>
    </span>

    <span class="col-md-6">

      <p class="font-size-12 display-inline">


        zone
        &nbsp;<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&nbsp;<i class="fa fa-shopping-cart"></i></a>
    </li><li><a href="" class="btn btn-buy btn-sm">details&nbsp;<i class="fa fa-eye"></i></a>
    </li>
  </ul>
</div>
</div>

3 个答案:

答案 0 :(得分:2)

使用driver.get_cookies()阻止点击事件传播到父级。这就是你如何使用它。

P.S。 IE支持event.stopPropagation()而不是e.cancelBubble

&#13;
&#13;
e.stopPropagation()
&#13;
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');
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

单击事件从点击的内部元素冒泡到文档根目录,通过所单击元素的所有父项。为了阻止它传播,你应该使用 - event.stopPropagation();

答案 2 :(得分:1)

事件冒泡是如何起作用的。首先,在实际被点击的元素上触发click事件(在你的情况下为a.btn.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.
}