ChatGPT解决这个技术问题 Extra ChatGPT

如何获取 $(this) 选择器的孩子?

我有一个类似于这样的布局:

<div id="..."><img src="..."></div>

并希望使用 jQuery 选择器在点击时选择 div 内的子 img

要获得 div,我有这个选择器:

$(this)

如何使用选择器获取子 img


g
gnarf

jQuery 构造函数接受名为 context 的第二个参数,该参数可用于覆盖选择的上下文。

jQuery("img", this);

这与像这样使用 .find() 相同:

jQuery(this).find("img");

如果您想要的 imgs only 是点击元素的直接后代,您也可以使用 .children()

jQuery(this).children("img");

对于它的价值: jQuery("img", this) 在内部转换为: jQuery(this).find("img") 所以第二个稍微快一点。 :)
p
philnash

你也可以使用

$(this).find('img');

这将返回 div 的后代的所有 img


在一般情况下,似乎 $(this).children('img') 会更好。例如 <div><img src="..." /><div><img src="..." /></div></div> 因为大概用户想要找到 1 级 imgs。
r
rakslice

如果您需要获得恰好下降一级的第一个 img,您可以这样做

$(this).children("img:first")

B
Book Of Zeus

如果您的 DIV 标签紧跟在 IMG 标签之后,您还可以使用:

$(this).next();

.next() 真的很脆弱,除非你总能保证元素会是下一个元素,否则最好使用不同的方法。在这种情况下,IMG 是 div 的后代,而不是兄弟。
i
isherwood

直系子女是

$('> .child-class', this)

t
turivishal

您可以找到父 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>

那么你不能使用上面的代码来查找第二个 img 元素的 alt 值。所以你可以试试这个:

 $(this).find("img:last-child").attr("alt")
                   OR
 $(this).children("img:last-child").attr("alt")

此示例显示了如何在父对象中找到实际对象的一般想法。您可以使用类来区分您孩子的对象。这既简单又有趣。 IE

<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 作为上述代码。如需更多信息,请访问儿童 http://api.jquery.com/children/ 和查找 http://api.jquery.com/find/。参见示例 http://jsfiddle.net/lalitjs/Nx8a6/


O
Oskar

在 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

A
Adam

在不知道 DIV 的 ID 的情况下,我认为您可以像这样选择 IMG:

$("#"+$(this).attr("id")+" img:first")

这可能确实有效,但这有点像鲁布·戈德堡的回答:)
B
BoltClock

试试这个代码:

$(this).children()[0]

@rémy:这甚至不是有效的语法。 (花了整整 2 年的时间让任何人注意到......)
a
ann

您可以使用以下任一方法:

1 查找():

$(this).find('img');

2 个孩子():

$(this).children('img');

T
Thirumalai murugan

jQuery 的 each 是一种选择:

<div id="test">
    <img src="testing.png"/>
    <img src="testing1.png"/>
</div>

$('#test img').each(function(){
    console.log($(this).attr('src'));
});

D
Dennis R

您可以使用 Child Selecor 来引用父级中可用的子元素。

$(' > img', this).attr("src");

下面是如果您没有对 $(this) 的引用,并且您想在其他函数的 div 中引用可用的 img

 $('#divid > img').attr("src");

N
Nilesh Thakkar

这也应该有效:

$("#id img")

R
RPichioli

这是一个功能代码,您可以运行它(这是一个简单的演示)。

当您单击 DIV 时,您会通过一些不同的方法获取图像,在这种情况下,“this”就是 DIV。

$(document).ready(function() { // 当你点击 DIV 时,你会使用 "this" $('#my_div').click(function() { console.info('Initializing the tests.. '); console.log('方法#1: '+$(this).children('img')); console.log('方法#2: '+$(this).find('img')) ; // 这里,我选择 console.log('Method #3: '+$(this).find('img:eq(0)')); }); }) ; .the_div{ 背景颜色:黄色;宽度:100%;高度:200px; }

希望能帮助到你!


J
Jason Williams

您的 <div> 中可能有 0 到多个 <img> 标记。

要查找元素,请使用 .find()

为了保证您的代码安全,请使用 .each()

一起使用 .find().each() 可以防止在 0 个 <img> 元素的情况下出现空引用错误,同时还允许处理多个 <img> 元素。

// 在你的 div 上设置点击处理程序 $("body").off("click", "#mydiv").on("click", "#mydiv", function() { // 使用查找图像。 find() 和 .each() $(this).find("img").each(function() { var img = this; // "this" 现在的作用域是图像元素 // 用图像 $(this).animate({ width: ($(this).width() > 100 ? 100 : $(this).width() + 100) + "px" }, 500); }); } ); #mydiv { 文本对齐:居中;垂直对齐:中间;背景颜色:#000000;光标:指针;填充:50px; }


S
Sumit Lahiri

$(document).ready(function() { // 当你点击 DIV 时,你会使用 "this" $('#my_div').click(function() { console.info('Initializing the tests.. '); console.log('方法#1: '+$(this).children('img')); console.log('方法#2: '+$(this).find('img')) ; // 这里,我选择 console.log('Method #3: '+$(this).find('img:eq(0)')); }); }) ; .the_div{ 背景颜色:黄色;宽度:100%;高度:200px; }


K
Kamil Kiełczewski

如果您的 img 恰好是 div 中的第一个元素,那么请尝试

$(this.firstChild);

$( "#box" ).click( function() { let img = $(this.firstChild); console.log({img}); })


V
Vishnu Prasanth G

使用本机 javascript,您可以使用

如果您有多个图像标签,请使用

this.querySelectorAll("img")

如果只有一个图像标签,那么我们

this.querySelector("img")


H
Hassan Fayyaz

你可以使用

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
 $(this).find('img');
</script>