これに似たレイアウトがあります。
<div id="..."><img src="..."></div>
そして、クリック時にjQueryセレクターを使用してimg
内の子div
を選択します。
div
を取得するために、私はこのセレクターを持っています:
$(this)
セレクタを使用して子img
を取得する方法を教えてください。
JQueryコンストラクターは context
という2番目のパラメーターを受け入れます。これは選択のコンテキストをオーバーライドするために使用できます。
jQuery("img", this);
これは、 .find()
を次のように使用するのと同じです。
jQuery(this).find("img");
あなたが望む画像が only クリックされた要素の直接の子孫であるならば、 .children()
を使うこともできます。
jQuery(this).children("img");
あなたも使うことができます
$(this).find('img');
これはimg
の子孫であるすべてのdiv
を返します。
最初のimg
を正確に1レベル下げる必要がある場合は、次のようにします。
$(this).children("img:first")
DIVタグの直後にIMGタグが続く場合は、次のものも使用できます。
$(this).next();
direct childrenは
$('> .child', this)
以下のように親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要素を含みます。だからこれは以下の通りです
$(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
このコードを試してください:
$(this).children()[0]
DIVのIDを知らなくても、このようにIMGを選択できると思います。
$("#"+$(this).attr("id")+" img:first")
以下の方法のいずれかを使用できます。
1 find():
$(this).find('img');
2人の子供():
$(this).children('img');
jQueryのeach
は1つの選択肢です。
<div id="test">
<img src="testing.png"/>
<img src="testing1.png"/>
</div>
$('#test img').each(function(){
console.log($(this).attr('src'));
});
Child Selecor を使用して、親内で使用可能な子要素を参照できます。
$(' > img', this).attr("src");
そして以下は、あなたが$(this)
を参照しておらず、他の関数からのimg
内で利用可能なdiv
を参照したい場合です。
$('#divid > img').attr("src");
これもうまくいくはずです。
$("#id img")
これは機能的なコードです、あなたはそれを実行することができます(それは簡単なデモンストレーションです)。
DIVをクリックすると、いくつかの異なる方法で画像が表示されます。この場合、「これ」が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()
を一緒に使用すると、0個の<img>
要素の場合の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>
$(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>