为什么打开"点击,"按钮"而是由跨度处理?

时间:2014-07-29 03:33:21

标签: javascript jquery events event-handling

我遇到的事情似乎与事件jquery完全错误。

我有以下简单的HTML列表

<ul>
  <li><button class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-minus-sign"></span></button> Chocolate</li>
  <li><button class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-minus-sign"></span></button> Butter</li>
  <li><button class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-minus-sign"></span></button> Milk</li>
  <li><button class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-minus-sign"></span></button> ugar</li>
</ul>

以及以下JavaScript:

$(document).on("click", "button", function(evt) {
  console.debug("got a click in", evt.target);
});

当我点击按钮时,我

got a click in <span class="glyphicon glyphicon-minus-sign"></span>

而不是按钮。

为什么?

2 个答案:

答案 0 :(得分:2)

事件对象的target属性指向事件的发起者;在这里,它是点击的第一个目标元素,显然是<span>

如果您想要.on()选择的元素,jQuery会将其提供为this

$(document).on("click", "button", function(evt) {
    console.debug("got a click in", this);
});

(请注意,使用以$(document).ready为根的委托时,您无需等待document。)

答案 1 :(得分:0)

任何元素都可以收到点击事件。如果它没有处理它,事件将会#34;冒泡&#34;通过父元素。