1

私は次のHTMLを持っています

<div class="myclass" value="1">
    <div>
      <div class="myclass" value="">
         <a class="popup" id="12" target="_blank" href="xxx">popup</a>
      </div>
     </div>
</div>

ポップアップクラスのクリックイベントでjQueryを使用しています.例では値が「1」のクラス「myclass」で祖父のdivの値を取得しようとしています。これを試しましたが、「未定義」が返されます

$('.popup').click(function(){
    alert($(this).parent('.myclass').parent('.myclass').attr('value')
});
4

4 に答える 4

4

アンバランスなブレースの問題です。アラートを閉じるか、次の代わりに);使用する必要があります。closestparent

alert($(this).closest('.myclass').closest('.myclass').attr('value'));
于 2012-06-13T14:53:40.413 に答える
2

parentsの代わりに使用しparentます。parent直接の親のみを見て<div>、2 つの .myclass div の間に a があるため、セレクターは失敗します。

$('.popup').click(function(){
    var val = $(this).parents('.myclass').parents('.myclass').attr('value');
    alert(val);
});​

したがって、あなたの例ではparent、セレクターが一致しないため、2番目は失敗します。これparentは、直接の親のみを見るためです。parentドキュメントから:

.parents() メソッドと .parent() メソッドは似ていますが、後者は DOM ツリーを 1 レベル上に移動するだけです。

セレクターをこれに単純化することもできます。

var val = $(this).parent().parents('.myclass').attr('value');

実際の例はjsFiddle にあります。

于 2012-06-13T14:58:49.337 に答える
0

私の場合、このページのすべてのコードが機能しませんでした。しかしこの作品!var result = $(this).closest('.news').attr('index');

于 2013-07-08T13:03:57.450 に答える
0

これはどうですか?

$('.popup').click(function(e){
    alert($(this).parents('.myclass').last().attr('value')
});
于 2012-06-13T14:57:03.667 に答える