jQuery操作/ each() - 为什么这不是针对单个元素?

时间:2012-03-08 17:06:09

标签: jquery foreach

我有一些图像(在其他地方生成),我想使用jQuery操作和增强。

我有一个脚本执行我需要的一切,除了个别操作;我的脚本对所有元素执行,而不是单独执行。我错过了什么?

这就是我所拥有的:

此格式的多张图片:

<p>
  <a href="">
    <img src="" />
  </a>
</p>
<p>
  <a href="">
    <img src="" />
  </a>
</p>

jQuery的:

  $('p').each(function(){

        //grab img's SRC
        var imgLinkMerge = $('p img').attr('src');

          //find the a tag, change HREF for imgLinkMerge value
          $(this).find('a').attr('href', imgLinkMerge).each(function(){
            //set css BG IMG
            $(this).css('background-image', 'url(' + imgLinkMerge + ')');
          });

        });

3 个答案:

答案 0 :(得分:4)

使用$('p img'),您将在页面上的每个img内选择所有p。您希望关注p循环中的 each()

改变这个:

var imgLinkMerge = $('p img').attr('src');

到此:

var imgLinkMerge = $(this).find('img').attr('src');

答案 1 :(得分:2)

 $('p').each(function(){

        //grab img's SRC
        var imgLinkMerge = $(this).find('img').attr('src');

          //find the a tag, change HREF for imgLinkMerge value
          $(this).find('a').attr('href', imgLinkMerge).each(function(){
            //set css BG IMG
            $(this).css('background-image', 'url(' + imgLinkMerge + ')');
          });

        });

答案 2 :(得分:1)

这种变化

var imgLinkMerge = $('p img').attr('src');

var imgLinkMerge = $('img',$(this)).attr('src');

这将使用当前上下文即当前img

选择p