如何使用 jQuery 选择多个子元素?

发布于 2024-12-22 04:35:21 字数 1064 浏览 2 评论 0原文

这里完全是 jQuery 新手。使用此示例 HTML,我想使用 jQuery 将每个 span.caption 移动到前面的 A 标记内。

之前:

 <ul class="gallery">
 <li><a href="http://mysite.com/mural.jpg"><img src="mural.jpg"/></a>     
 <span class="caption">Nice mural</span>
 </li>
 <li><a href="http://mysite.com/car.jpg"><img src="car.jpg"/></a>     
 <span class="caption">New car</span>
 </li>
</ul>

期望的结果:

 <ul class="gallery">
 <li><a href="http://mysite.com/mural.jpg"><img src="mural.jpg"/>     
 <span class="caption">Nice mural</span></a>
 </li>
 <li><a href="http://mysite.com/car.jpg"><img src="car.jpg"/>     
 <span class="caption">New car</span></a>
 </li>
</ul>

我尝试了 $('ul.gallery li span.caption').appendTo($('ul.gallery li a img')); 但它选择了每个 span.caption 和将它们放置在第一个 img 标签内。

我认为我需要以某种方式使用父子选择器,但对此感到困惑。

谢谢!

Total jQuery newbie here. Using this example HTML, I want to use jQuery to move every span.caption inside the preceding A tag.

Before:

 <ul class="gallery">
 <li><a href="http://mysite.com/mural.jpg"><img src="mural.jpg"/></a>     
 <span class="caption">Nice mural</span>
 </li>
 <li><a href="http://mysite.com/car.jpg"><img src="car.jpg"/></a>     
 <span class="caption">New car</span>
 </li>
</ul>

Desired result:

 <ul class="gallery">
 <li><a href="http://mysite.com/mural.jpg"><img src="mural.jpg"/>     
 <span class="caption">Nice mural</span></a>
 </li>
 <li><a href="http://mysite.com/car.jpg"><img src="car.jpg"/>     
 <span class="caption">New car</span></a>
 </li>
</ul>

I tried $('ul.gallery li span.caption').appendTo($('ul.gallery li a img')); but it selects every span.caption and positions them inside the first img tag.

I think I need to use a parent-child selector in some way, but confused about that.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

单调的奢华 2024-12-29 04:35:21

您可以使用 .each 方法迭代匹配的 < 集合code>.caption 元素,以及 prev 来访问紧邻前面的元素(在您的情况下是 a ):

$(".caption").each(function() {
    var caption = $(this);
    caption.appendTo(caption.prev()); 
});

这是一个工作示例(使用 Firebug 检查源代码以查看结果)

You can use the .each method to iterate over the matched set of .caption elements, and prev to access the immediately preceding element (the a in your case):

$(".caption").each(function() {
    var caption = $(this);
    caption.appendTo(caption.prev()); 
});

Here's a working example (inspect the source with Firebug to see the result)

誰認得朕 2024-12-29 04:35:21

您可以稍微翻转一下逻辑并使用 append()

$('.gallery a').append(function() {
    return $(this).nextAll('.caption');
});

jsFiddle

我发现这更容易阅读自己,但是 YMMV。

You can flip your logic a bit and use append().

$('.gallery a').append(function() {
    return $(this).nextAll('.caption');
});

jsFiddle.

I find this easier to read myself, but YMMV.

养猫人 2024-12-29 04:35:21
$('.caption').each(function(){$(this).prev().append($(this))});
$('.caption').each(function(){$(this).prev().append($(this))});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文