为了账号安全,请及时绑定邮箱和手机立即绑定

无法让 JS 进入冒泡事件

无法让 JS 进入冒泡事件

Cats萌萌 2022-12-22 09:27:35
我有这个小提琴中的结构:https ://jsfiddle.net/Arne651/s8wbeyh5/11/<ul id="ul">  <li class="test">    <p>      Some text    </p>  </li>  <li class="test">    <p>      Some text    </p>  </li>  <li class="test">    <p>      Some text    </p>  </li></ul>我在一个<ul>元素上有一个事件,在这个事件中我试图对<li>被点击的元素做一些事情。这个<li>元素包含一个<p>元素,事件似乎没有向上冒泡。let ul = $("#ul")ul.on("click", function(e) {    let clicked = $(e.target)    console.log(clicked)    if (clicked.hasClass("test")) {        console.log("li triggered")    }})我不想要所有<li>元素上的事件,因为列表可能会变得很长,而且单个事件感觉更整洁。
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

单击文本时,目标是 p 标签。


获取最接近的 li 可能不是执行此操作的最佳方法,但这是可行的。


ul.on("click", function(e) {

    let clicked = $(e.target).closest('li');

    console.log(clicked);

    if (clicked.hasClass("test")) {

        console.log("li triggered");

    }

});


查看完整回答
反对 回复 2022-12-22
?
HUX布斯

TA贡献1876条经验 获得超6个赞

你可以添加点击 li only 试试这个


let li = $("#ul li.test")

li.on("click", function(e) {

  console.log("li triggered");

})

我首先获取所有具有 calse 测试的 li,然后在其上添加监听器。


查看完整回答
反对 回复 2022-12-22
  • 2 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信