jquery:尝试将图像转换为超链接

时间:2009-10-04 03:51:51

标签: jquery hyperlink element add

我几乎要去的地方,除了我无法弄清楚如何将var imgt变成超链接的图像。我已经尝试了一些东西,但它不断返回[object] [Object]

$j('#hp-featured-item > div[id^="post-"]').each(function() {
      var id=this.id.match(/post-(\d+)/);
      var imgt = $j("img:eq(0)");

      // I tried this but it didn't work
      // var imgt = $j("<a href='/blog/?p="+id[1]+"'>"+$j("img:eq(0)")+"</a>");

      var pt = $j("p:not(:has(img)):eq(0)");
      var hh = $j("h2:eq(0)");
      $j(this).html('');
      $j(this).append(imgt).append(hh).append(pt);
}); 

///更新了代码

$j('#hp-featured-item > div[id^="post-"]').each(function() {
                var id=this.id.match(/^post-([0-9]+)$/);
                var imgt = $j("img:eq(0)");
                $j(imgt).wrap($j('<a>').attr('href', '/'));
                var pt = $j("p:not(:has(img)):eq(0)");
                var hh = $j("h2:eq(0)");
                $j(this).html('');
                $j(this).append(imgt).append(hh).append(pt);
        });

好的,我把它放在评论中,但我也会根据你的建议把它放在这里......基本上,原来的html输出结构差别很大。有时它是

<img /> 
<h2> </h2> 
<p> </p>
<p> <img /> </p>
<h2> </h2>
<p> </p>

有时,它只是:

<h2> </h2>
<p><img /></p>
<p> text </p>

等...

我想拉第一个<img />,第一个<h2>和第一个<p>(没有包裹图像)并按顺序打印出来:< / p>

<img />
<h2>
<p>

而且,其余的可以消失......这只是一个总结...

好吧,好吧......我把它添加到底部,似乎有效:

$j(this).each(function() {
                        var img = $j('img');
                        $j(img).wrap($j('<a>').attr('href', '/'));
                });

1 个答案:

答案 0 :(得分:4)

您可以使用jQuery.prototype.wrap

$j('#hp-featured-item > div[id^="post-"]').each(function() {
      var id=this.id.match(/post-(\d+)/);
      var imgt = $j("img:eq(0)");

      $(imgt).wrap( 
          $('<a>').attr('href', '/blog/?p=' + id[1])
      );

});

这对我有用:

$('.post').each(function() {
    var img = $('img', this), src = $(img).attr('src')
    $(img).wrap( 
             $('<a>').attr('href', src)
    );
});

http://jsbin.com/iyabu

确保您设置的href属性是正确的。