jQuery - 每个()选择器在其他元素上工作,如何避免?

时间:2012-11-27 06:46:23

标签: jquery image jquery-selectors

我正在尝试做什么:

jQuery检查所有:<div class="message-body">

然而,另一个名为<div class="message-body">的div也会被选中。

代码按预期工作 - 但 包括 其他具有相似名称的div。

如何阻止jQuery选择其他元素?

示例可以在这里看到:http://jsfiddle.net/Z5HJE/

顶部图片不应作为链接。

底部图像应该是唯一可以作为链接使用的图像。

我根本没有jQuery经验,但我的网站需要这个简单的功能。

感谢您的阅读。

3 个答案:

答案 0 :(得分:1)

jQuery完全按照你的要求去做。

在迭代所有.message-body元素时,它应该通过所有来完成。

在注意到你可能误解了你的问题之后,你的案例中的探测器是你遍历所有div,然后你再次遍历所有img标签,无论它们的位置如何。 你应该在第一个$('.message-body img')循环中尝试这个:each,你不需要两个。

代码:

   $('.message-body img').each(function ()
   {
      var currImg = $(this);
      currImg.wrap("<a target='_blank' href='" + currImg.attr("src") + "'/>");
   });

答案 1 :(得分:0)

这将有效:)

 $(function ()
    {
       $('.message-body').each(function ()
        {
           $(this).find('img').each(function ()
            {
                var currImg = $(this);  // cache the selector
                currImg.wrap("<a target='_blank' href='" + currImg.attr("src") + "'/>");
            });
        });
    });​

http://jsfiddle.net/Z5HJE/2/

答案 2 :(得分:0)

我假设你需要在<div class="message-body">内获取img标签,这样你就可以修改你的javascript代码:

$('.message-body').each(function ()
{
   $(this).find('img').each(function ()
   {
      var currImg = $(this);  // cache the selector
      currImg.wrap("<a target='_blank' href='" + currImg.attr("src") + "'/>");
   });
});