回答:
jQueryコンストラクターはcontext
、選択のコンテキストをオーバーライドするために使用できる2番目のパラメーターを受け入れます。
jQuery("img", this);
これは次のように使用するのと同じ.find()
です:
jQuery(this).find("img");
必要なimgがクリックされた要素の直接の子孫のみである場合は、次のものも使用できます.children()
。
jQuery(this).children("img");
あなたも使うことができます
$(this).find('img');
のimg
子孫であるすべてのを返しますdiv
$(this).children('img')
より良いように思われます。たとえば<div><img src="..." /><div><img src="..." /></div></div>
、おそらくユーザーが第1レベルのimgを検索したいためです。
あなたがimg
正確に1レベル下の最初のものを取得する必要がある場合は、行うことができます
$(this).children("img:first")
.children()
は、「1つ下のレベル」:first
がどこから来たかであり、「最初」がどこから来たかです。
.find()
代わりに使用する場合にのみ適用されます.children()
this
は、既に<div>
を含むへの参照でしたが、参照から<img>
トラバースするタグのレベルが複数ある場合は、間違いなく複数のchildren()
呼び出しを作成できます
DIVタグの直後にIMGタグが続く場合は、次のものも使用できます。
$(this).next();
あなたは以下のように親divのすべてのimg要素を見つけることができます
$(this).find('img') or $(this).children('img')
特定のimg要素が必要な場合は、次のように書くことができます
$(this).children('img:nth(n)')
// where n is the child place in parent list start from 0 onwards
divに含まれるimg要素は1つだけです。このため、以下は正しいです
$(this).find("img").attr("alt")
OR
$(this).children("img").attr("alt")
しかし、divに以下のようなimg要素が含まれている場合
<div class="mydiv">
<img src="test.png" alt="3">
<img src="test.png" alt="4">
</div>
次に、2番目のimg要素のalt値を見つけるために上位コードを使用することはできません。だからあなたはこれを試すことができます:
$(this).find("img:last-child").attr("alt")
OR
$(this).children("img:last-child").attr("alt")
この例は、親オブジェクト内で実際のオブジェクトを見つける方法の一般的な考え方を示しています。クラスを使用して子オブジェクトを区別できます。それは簡単で楽しいです。すなわち
<div class="mydiv">
<img class='first' src="test.png" alt="3">
<img class='second' src="test.png" alt="4">
</div>
以下のようにしてこれを行うことができます:
$(this).find(".first").attr("alt")
より具体的に:
$(this).find("img.first").attr("alt")
上記のコードのようにfindまたはchildrenを使用できます。詳細については、Children http://api.jquery.com/children/およびFind http://api.jquery.com/find/をご覧ください。例を参照してくださいhttp://jsfiddle.net/lalitjs/Nx8a6/
jQueryで子を参照する方法。次のjQueryに要約しました。
$(this).find("img"); // any img tag child or grandchild etc...
$(this).children("img"); //any img tag child that is direct descendant
$(this).find("img:first") //any img tag first child or first grandchild etc...
$(this).children("img:first") //the first img tag child that is direct descendant
$(this).children("img:nth-child(1)") //the img is first direct descendant child
$(this).next(); //the img is first direct descendant child
DIVのIDがわからなければ、次のようにIMGを選択できると思います。
$("#"+$(this).attr("id")+" img:first")
このコードを試してください:
$(this).children()[0]
$($(this).children()[0])
。
$(this:first-child)
$($(this).children()[x])
使用$(this).eq(x)
またはちょうど、あなたが最初のものをしたい場合$(this).first()
。
jQuery each
は1つのオプションです。
<div id="test">
<img src="testing.png"/>
<img src="testing1.png"/>
</div>
$('#test img').each(function(){
console.log($(this).attr('src'));
});
あなたは使用することができます子供Selecorを親内で利用可能な子要素を参照するために。
$(' > img', this).attr("src");
そして、以下は、参照がなく、他の関数から$(this)
参照img
できるようにするdiv
場合です。
$('#divid > img').attr("src");
これが関数コードです。実行できます(簡単なデモです)。
DIVをクリックすると、いくつかの異なる方法で画像を取得できます。この場合、「this」はDIVです。
$(document).ready(function() {
// When you click the DIV, you take it with "this"
$('#my_div').click(function() {
console.info('Initializing the tests..');
console.log('Method #1: '+$(this).children('img'));
console.log('Method #2: '+$(this).find('img'));
// Here, i'm selecting the first ocorrence of <IMG>
console.log('Method #3: '+$(this).find('img:eq(0)'));
});
});
.the_div{
background-color: yellow;
width: 100%;
height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="my_div" class="the_div">
<img src="...">
</div>
それが役に立てば幸い!
<img>
内に0個から多数のタグを含めることができます<div>
。
要素を見つけるには、 .find()
ます。
コードを安全に保つには、を使用し.each()
ます。
.find()
およびを.each()
一緒に使用すると、<img>
要素が0の場合のnull参照エラーが防止され、複数の<img>
要素の処理も可能になります。
// Set the click handler on your div
$("body").off("click", "#mydiv").on("click", "#mydiv", function() {
// Find the image using.find() and .each()
$(this).find("img").each(function() {
var img = this; // "this" is, now, scoped to the image element
// Do something with the image
$(this).animate({
width: ($(this).width() > 100 ? 100 : $(this).width() + 100) + "px"
}, 500);
});
});
#mydiv {
text-align: center;
vertical-align: middle;
background-color: #000000;
cursor: pointer;
padding: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="mydiv">
<img src="" width="100" height="100"/>
</div>
$("body").off("click", "#mydiv").on("click", "#mydiv", function() {
event.stopImmediatePropagation()
起こらないようにするために要素を使用することにしました。
$(document).ready(function() {
// When you click the DIV, you take it with "this"
$('#my_div').click(function() {
console.info('Initializing the tests..');
console.log('Method #1: '+$(this).children('img'));
console.log('Method #2: '+$(this).find('img'));
// Here, i'm selecting the first ocorrence of <IMG>
console.log('Method #3: '+$(this).find('img:eq(0)'));
});
});
.the_div{
background-color: yellow;
width: 100%;
height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="my_div" class="the_div">
<img src="...">
</div>
あなたは使うことができます
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
$(this).find('img');
</script>