jquery - 单击时获取元素的属性。该元素包含内部div,因此得到未定义的错误

时间:2012-08-08 09:54:43

标签: javascript jquery

我有这样的HTML代码:

<ul>
  <li k="5" id="l">
    <div>
        <div>
         Some Text
        </div>
    </div>   
  </li>
</ul> 

从上面的代码中,如果我在 li 标记内没有任何div或spans或其他元素,那么$(e.target).attr(“k”)将给出正确的值。但是,因为它内部有一些其他元素,当我单击该元素时,它会给出未定义的值。解决办法是什么 ?

6 个答案:

答案 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');
});