2012-11-27 38 views
0

我想要做的事:jQuery - 每個()選擇器在其他元素上工作,如何避免?

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

然而,另一個DIV叫:<div class="message-body">被選定。

該代碼按預期工作 - 但是包括其他具有相似名稱的div。

如何防止jQuery選擇這些其他元素?

例子可以在這裏看到:http://jsfiddle.net/Z5HJE/

頂部圖像不應該作爲一個鏈接工作。

底部圖像應該是唯一一個作爲鏈接工作的圖像。

我沒有經驗jQuery的所有,但我需要這個簡單的功能爲我的網站。

謝謝您的閱讀。

+0

你發佈的小提琴有一個div與這個「消息」和另一個「消息體」。 – ankur

+0

問題是我猜'img'標籤 – sayannayas

回答

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

謝謝,這正是我想要的! – Entryton

+0

不客氣 – Habibillah

1

jQuery的確如你所說的那樣做。

當遍歷所有的.message-body元素時,它應該通過全部

在注意到你可能拼錯了你的問題之後,你的案例中的probem就是遍歷所有div,然後遍歷所有img標籤,不管它們的位置如何。 你應該在你的第一個each循環中試試這個:$('.message-body img'),你不需要這兩個。

代碼:

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

這應該是正確的答案! – Spinbad

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/

相關問題