0

私はこのようなhtmlコードを持っています:

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

上記のコードから、 liタグ内にdivやspan、またはその他の要素がない場合、$(e.target).attr( "k")は正しい値を返します。ただし、他の要素が含まれているため、要素をクリックすると、未定義の値が表示されます。解決策は何ですか?

4

6 に答える 6

0

これも機能します:

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

jQueryclosest()を見てください-それは直接の親に依存していません。

于 2012-08-08T09:57:05.140 に答える
0

これは、イベントのバブリングが原因で発生しています。イベントは実際には発生していませんがli、その子/子孫要素の1つで発生しています。kしたがって、実際には、ではなく、その属性を探していますli

イベントバブリングの可能性がないため、子要素がない場合はこれは発生しません。イベントは常に。によってのみトリガーされますli

これを回避する最も簡単な方法はthis、ではなくイベントコールバック内で使用することですevt.target

$('li').on('click', function() {
    var k = $(this).attr('k');
});
于 2012-08-08T09:58:35.150 に答える
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:09:32.903 に答える
0

これも試すことができます

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