2012-03-08 37 views
1

我有一些圖像(在別處生成),我想操縱和使用jQuery進行增強。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 + ')'); 
      }); 

     }); 

+0

選擇img'img'裏面'了'。 – Bot 2012-03-08 17:08:33

+0

您能更具體地瞭解發生的事情與您想要的不同嗎? – nicholaides 2012-03-08 17:09:13

+0

我想var imgLinkMerge = $('p img')。attr('src');對此,你可能需要var imgLinkMerge = $(this).find('img')。attr('src'); – 2012-03-08 17:09:15

回答

4

隨着$('p img')您正在選擇全部img該頁面的每個p。你想要關注這個p裏面的each()循環。

更改此:

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

這樣:

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

並聲明var _this = $(this);在開始重用 – 2012-03-08 17:12:15

+0

謝謝兩個 - 完美!現在我明白了。 – 2012-03-09 13:35:12

1

這改變

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

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

這將使用當前上下文,即當前p

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 + ')'); 
      }); 

     });