0

我有这样的html代码:

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

从上面的代码中,如果我在li标签中没有任何 div 或 span 或其他元素,那么 $(e.target).attr("k") 将给出正确的值。但是,由于它内部还有一些其他元素,所以当我单击该元素时,它会给出 undefined value 。解决办法是什么 ?

4

6 回答 6

0

我通过运行得到正确答案:

 $(function(){
     $("li").click(function(){
        alert($(this).attr("k"));                
     });
 });​
于 2012-08-08T09:59:43.470 回答
0

这也可以:

$(e.target).closest("li").attr("k");
于 2012-08-08T10:06:05.770 回答
0

看看jQuery——closest()它不依赖于直接的父级。

于 2012-08-08T09:57:05.140 回答
0

这是由于事件冒泡而发生的。该事件实际上不是在其子/后代元素之一上触发,li而是在其一个子/后代元素上触发。因此,您实际上是在寻找它的k属性,而不是li.

当没有子元素时不会发生这种情况,因为没有事件冒泡的可能性 - 事件将始终仅由li.

最简单的方法是this在事件回调中使用而不是evt.target.

$('li').on('click', function() {
    var k = $(this).attr('k');
});
于 2012-08-08T09:58:35.150 回答
0

属性可以通过以下方式获取

$(e.target).closest("li").attr("k");
于 2012-08-08T10:09:32.903 回答
0

你也可以试试这个

$('li').('click', function() {
  var k = $(this).attr('k');
});
于 2012-08-08T10:17:52.950 回答