2010-06-22 35 views
1

我要让我的图片为使用jQuery的帮助链接:的jQuery的insertBefore,insertAfter问题

$("img:gt(0)").each(function() { 
      var curr = $(this); 
      if (curr.width() >= 500) { 
       var m = 500/curr.width(); 
       curr.height(curr.height() * m); 
       curr.width(curr.width() * m); 
      } 
      $("<a href='" + curr.attr("src") + "'>").insertBefore(curr); 
      $("</a>").insertAfter(curr); 
     }); 

但我发现了:

<a href="/Images/7827-1280x800.jpg"></a> 
<img height="800" width="1280" src="/Images/7827-1280x800.jpg" alt="" style="height: 312.5px; width: 500px;"> 

相反的:

<a href="/Images/7827-1280x800.jpg"> 
<img height="800" width="1280" src="/Images/7827-1280x800.jpg" alt="" style="height: 312.5px; width: 500px;"> 
</a> 

回答

2

你不必这样做。您可以使用wrap来执行此操作。

喜欢的东西

curr.wrap("<a href='" + curr.attr("src") + "' />"); 
1

你可以使用的jQuery

$("img:gt(0)").each(function() { 
    var curr = $(this); 
    if (curr.width() >= 500) { 
     var m = 500/curr.width(); 
     curr.height(curr.height() * m); 
     curr.width(curr.width() * m); 
    } 
    curr.wrap($('<a href="' + curr.attr("src") + '">')); 
}); 
1

这是因为$("<a href='" + curr.attr("src") + "'>")将创建一个普通的HTML元素提供的包装()方法。我认为,jQuery将忽略缺少的结束标记并创建这个html:<a href="/Images/7827-1280x800.jpg"></a>$("</a>")将被忽略。