【问题标题】:jquery: Trying to make image into hyperlinkjquery:试图将图像变成超链接
【发布时间】:2009-10-04 03:51:51
【问题描述】:

我几乎达到了我想要的位置,只是我不知道如何将 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>

等等……

我想拉出第一个&lt;img /&gt;、第一个&lt;h2&gt;和第一个&lt;p&gt;(没有包裹在图像上)并按顺序打印出来:

<img />
<h2>
<p>

而且,剩下的就可以走了……这只是一个摘要视图……

好吧,好吧...我在底部添加了这个,它似乎可以工作:

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

【问题讨论】:

  • “按该顺序打印出来” - 您想要的输出 html 在 img 周围没有锚点。应该吗?
  • 当你说它返回 "[object][Object]" .. 这怎么不是你想要的?毕竟,您 正在 处理一个 jQuery 对象。如果您提醒任何对象,它会给您 [object][Object],因为您没有执行低级 DOM 脚本。
  • “我已经尝试了一些东西” - 你能更具体地说明你的代码是如何不起作用的吗?因为警报时任何 jQuery 对象都是对象对象,所以该部分根本不重要。如果您在其中一个部门中获取整个 HTML 源代码的 sn-p,完全发布源代码,在 JS 完成其工作后显示源代码的输出,并指出它实际上没有做什么,那就容易多了它应该做什么。

标签: jquery hyperlink element add


【解决方案1】:

您可以为此使用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 属性是正确的。

【讨论】:

猜你喜欢
  • 2013-04-21
  • 2017-09-03
  • 2012-08-18
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 2012-04-02
相关资源
最近更新 更多