javascript - onclick 事件仅适用于按钮,不适用于与按钮一起使用的字形

标签 javascript jquery html css twitter-bootstrap

我已经使用 bootstrap 创建了带有字形图标的圆形按钮,我想更改按钮的颜色,包括字形图标颜色。但是当我点击 glyphicon 时,onlclick 事件仅适用于 glyphicon 而不是按钮。 http://embed.plnkr.co/E1dUnkW1tmOCWqYkRaG5/

function setColor(e) {
    var target = e.target,
        status = e.target.classList.contains('btn-success');

    e.target.classList.add(status ? 'btn-default' : 'btn-success');
    e.target.classList.remove(status ? 'btn-success' : 'btn-default');
}

我的 Bootstrap 按钮

<button onclick="setColor(event)" type="button" class="btn btn-circle btn-lg"><span class="glyphicon glyphicon-search" style="margin: 0 0px;"></span></button>

最佳答案

很好用,但是 Event.target是触发/调度事件的元素,而不是您将监听器附加到的元素。

您正在寻找Event.currentTarget :

Identifies the current target for the event, as the event traverses the DOM. It always refers to the element the event handler has been attached to as opposed to event.target which identifies the element on which the event occurred.

因此将您的代码更改为:

function setColor(e) {
  var currentTarget = e.currentTarget,
      status = e.currentTarget.classList.contains('btn-success');

  e.currentTarget.classList.add(status ? 'btn-default' : 'btn-success');
  e.currentTarget.classList.remove(status ? 'btn-success' : 'btn-default');
}

关于javascript - onclick 事件仅适用于按钮,不适用于与按钮一起使用的字形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33624633/

相关文章:

javascript - 找到一个 <div> ,其中包含一个 <p> ,里面有给定的文本

javascript - BG 图像上的视差 H1

javascript - 单击时显示文本和动画

javascript - 在某些浏览器/设备组合上横向播放视频流

javascript - 是否可以将一项选择仅绑定(bind)到一个框?

javascript - 我疯了还是本地存储......?

php - 如何删除下面示例中的数据库行?

javascript - AJAX + PHP 表单不传递变量?

jquery - 有没有办法在 jQuery 中获取选择器的交集

javascript - 使用 Javascript 移动使用 CSS Top Bottom Left Right 定位的元素