35

$(this)セレクター内でimgを「選択」しようとしています。私はそれを使用して見つけることができることを知っています.find('img')が、これは可能です:

$("img",this)

これを行うための最適な方法は何ですか?

元々コード

<a class="picture" href="test.html">
    <img src="picture.jpg" alt="awesome">
</a>
4

6 に答える 6

74

これを行うための最適な方法は何ですか?

$(this).find('img')とは両方とも$('img', this)同等です。

ドキュメントから:

内部的には、セレクターコンテキストは.find()メソッドで実装されるため、$('span'、this)は$(this).find('span')と同等です。

http://api.jquery.com/jQuery/

于 2012-04-17T07:58:58.603 に答える
5

それを行うのに最適な合理的な方法です。

だからあなたは次のようにします:

$('a').click( function() {
   //if the element dosent change you can use this
   //var src = $('img', this).attr('src');
   //else use $(this)
   var src = $('img', $(this)).attr('src');
   alert(src);
   return false;
});

参照: http: //jsfiddle.net/xYmwV/

どちらの方法でもdom要素をロードして検索するため、実際には違いはありません。もちろん、あなたのやり方は「よりクリーン」でシンプルですが、もっと混乱するかもしれません:)

より高速な方法は$(this).children()、要素を検索する必要がないためですが、DOM内で直接ダウンワードになります。しかし、それはスクリプトの柔軟性を奪います。

于 2012-04-17T07:57:16.860 に答える
4

はい、あなたはそれを行うことができます...とにかくそれらは同等なので、それはあなたの「構文の好み」の問題だけです:

内部的には、セレクターコンテキストは.find()メソッドで実装されるため、$('span'、this)は$(this).find('span')と同等です。

http://api.jquery.com/jQuery/

于 2012-04-17T07:59:14.583 に答える
2

それは本当に重要ではありません、あなたが好むものを選んでください、それは主に文体の選択です。

jQueryは、内部でor(すでにjQueryインスタンスの場合)を$(selector, context)実行することでフォームを処理するため、理論的にはフォームの方がわずかに効率的ですが、実際に問題になる可能性はほとんどありません。$(context).find(selector)contextcontext.find(selector)find

于 2012-04-17T08:01:07.183 に答える
0

なんで使えないの.find('img')?それは私にはうまくいきます:http://jsfiddle.net/nnmEY/

于 2012-04-17T07:57:25.843 に答える
0

$(this)セレクター内でimgを「選択」しようとしています。

var myImg = $(this).find("img");
于 2012-04-17T07:57:35.280 に答える