无法让 JS 进入冒泡事件
Can't get JS to bubble event
我有这样的结构fiddle: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>
元素上的事件,因为列表可能会变得很长,而且单个事件感觉更整洁。
你可以在 li 上添加点击试试这个
let li = $("#ul li.test")
li.on("click", function(e) {
console.log("li triggered");
})
我首先获取所有具有 calse 测试的 li,然后在其上添加侦听器。
点击文字时,目标是p标签。
获取最近的 li 可能不是执行此操作的最佳方法,但这是可行的。
ul.on("click", function(e) {
let clicked = $(e.target).closest('li');
console.log(clicked);
if (clicked.hasClass("test")) {
console.log("li triggered");
}
});
我有这样的结构fiddle: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>
元素上的事件,因为列表可能会变得很长,而且单个事件感觉更整洁。
你可以在 li 上添加点击试试这个
let li = $("#ul li.test")
li.on("click", function(e) {
console.log("li triggered");
})
我首先获取所有具有 calse 测试的 li,然后在其上添加侦听器。
点击文字时,目标是p标签。
获取最近的 li 可能不是执行此操作的最佳方法,但这是可行的。
ul.on("click", function(e) {
let clicked = $(e.target).closest('li');
console.log(clicked);
if (clicked.hasClass("test")) {
console.log("li triggered");
}
});