js冒泡事件,事件绑定出现问题?

有个按钮。里面嵌套了一个图标,点击按钮时,我需要得到按钮的data-itemid值,我把事件绑定到button上,用$(event.target).data("itemid")取值,有时值为undefined,经过调试,发现如果点击了i标签就出现这种情况了。查资料得知$(event.target)获取的是事件源,所以点到i上就无法取到btn的值了。这个问题该如何解决?
代码如下:

<button type="button" class="btn btn-danger btn-sm delbtn" data-itemid="2">
<i class="fa fa-fw fa-trash"></i>
</button>

jq:
$(".delbtn").click(function (event) {
       console.log(event.target);
        console.log($(event.target).data("itemid"));
 }
阅读 3.1k
5 个回答

这里,你要清楚event.target和$(this)的区别,event.target响应的是"click"这个事件的元素,不仅仅是绑定“click”的元素,你点击到了i标签,event.target就是i

个人习惯,经供参考:

var $t = $(this);
var itemid = $t.data('itemid');

console.log(itemid);
event.target //是点击触发的元素, 点击到<i>, 那么event.target就是<i>

//单击事件是绑定在button上的, 所以应使用$(this), 点击<i>时, 事件冒泡到button上, 触发该方法
$(this);  //button的jq对象

console.log($(this).data('itemid'));

$(event.currentTarget).data("itemid")试试看吧

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏