2011-08-08 41 views
0

我试着写一个循环来包裹上通过jQuery的图片所有的img:JQuery的每一个()失败循环

var $csstring = "div.article_column a img"; 
$($csstring).each(
    function() {  
     $($csstring).parent().wrap("<div class='dropshadow'></div>"); 
}); 

,我收到此:

<div class="dropshadow"> 
    <div class="dropshadow"> 
     <div class="dropshadow"> 
      <div class="dropshadow">> 
       <div class="dropshadow"> 
        <a target="_blank" href="/ferdynand.jpg"> 
         <img height="126" width="190" border="0" src="aae7dda0d83bf7df21ce6f834db8228a.jpg"> 
        </a> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

我的意思是这是5张图片用同样的CSS,有人可以帮助我吗?

+1

它很小,但约定是在变量名的开头使用'$',如果它将被分配一个jquery对象。在这种情况下'$ csstring'是一个字符串变量,因此可能会让'$'混淆。 –

回答

0

而是执行此操作:

$($csstring).each(function() { 
    $(this).parent().wrap('<div class="dropshadow"></div>'); 
}); 
1

变化$csstringthis循环函数中:

var $csstring = "div.article_column a img"; 
$($csstring).each(
    function() {  
     $(this).parent().wrap("<div class='dropshadow'></div>"); 
    }); 
3

你可以做到这一点没有循环

// this contains an array of elements 
var $csstring = $("div.article_column a img"); 

// this will wrap all objects with your html 
$csstring.wrap("<div class='dropshadow'></div>"); 

注意:您需要$()来包装你的字符串使用变量一个jQuery对象。

编辑: 如果你想在阵列中访问特定的节点...

var $firstElement = $($csstring[0]); 
+0

如果这回答了您的问题,请点击对号。 :) – Trevor

0

我不认为你甚至需要每。只是这样做:

$("div.article_column a img").parent().wrap("<div class='dropshadow'></div>");