2010-06-22 3 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>") будут проигнорированы вообще.

Смежные вопросы