换行<a> tags around <img/> with href = img src?</a>

时间:2010-10-31 23:02:50

标签: jquery class anchor image

尝试将标记包装在图像周围,addClass和img的输入src作为标记的href:

 $(document).ready(function() {
$(".new img").each(function() {
    var src = $(this).attr('src').addClass('image');
    var a = $('<a/>').attr('href', src);
    $(this).wrap(a);
});
});

我的HTML:

<img class="new" src="pic0.png" title="Image_Title"/>

似乎无法让这个工作。任何建议都会有所帮助!

2 个答案:

答案 0 :(得分:9)

两件事。首先,你的选择器向后 - 它应该是img.new。其次,attr返回一个字符串,而不是jQuery,所以你不能链接它。执行以下操作并且它应该有效:

$(document).ready(function() {
    $("img.new").each(function() {
        var $this = $(this);
        var src = $this.attr('src');
        $this.addClass('image');
        var a = $('<a/>').attr('href', src);
        $this.wrap(a);
    });
});

答案 1 :(得分:5)

你的选择器只需要调整,这个:

$(".new img")

应该是:

$("img.new")

new on <img>本身,<img>不是class="new"元素的后代,这是什么你当前的选择器正在寻找。此外.attr('src')获取一个字符串,因此您需要在调用之前添加该类,总体如下:

$(function() {
  $("img.new").each(function() {
    var src = $(this).addClass('image').attr('src');
    var a = $('<a/>').attr('href', src);
    $(this).wrap(a);
  });
});

You can test it here,或更简单/更快的版本here

$(function() {
  $("img.new").each(function() {
    var a = $('<a/>').attr('href', this.src);
    $(this).addClass('image').wrap(a);
  });
});