我有这样的HTML代码:
<ul>
<li k="5" id="l">
<div>
<div>
Some Text
</div>
</div>
</li>
</ul>
从上面的代码中,如果我在 li 标记内没有任何div或spans或其他元素,那么$(e.target).attr(“k”)将给出正确的值。但是,因为它内部有一些其他元素,当我单击该元素时,它会给出未定义的值。解决办法是什么 ?
答案 0 :(得分:0)
看看jQuery closest()
- 它不依赖于直接父母。
答案 1 :(得分:0)
这是由于事件冒泡而发生的。该事件实际上不是在li
而是在其子/子元素之一上触发。因此,您实际上是在寻找k
的{{1}}属性,而不是li
。
当没有子元素时不会发生这种情况,因为没有可能发生事件冒泡 - 事件将始终仅由li
触发。
最简单的方法是在事件回调中使用this
而不是evt.target
。
$('li').on('click', function() {
var k = $(this).attr('k');
});
答案 2 :(得分:0)
我通过运行这个来得到正确的答案:
$(function(){
$("li").click(function(){
alert($(this).attr("k"));
});
});
答案 3 :(得分:0)
这也有效:
$(e.target).closest("li").attr("k");
答案 4 :(得分:0)
可以通过以下方式获取属性
$(e.target).closest("li").attr("k");
答案 5 :(得分:0)
你也可以试试这个
$('li').('click', function() {
var k = $(this).attr('k');
});