3

我正在尝试在 div 中的每个图像之后附加放大镜的图片。其中一些是链接的,在这种情况下,我希望它在</a>标签img后面的后面附加它。

我该怎么做:

<img src="a.jpg" .... />

变成:

<img src="a.jpg"><img src="mag.gif" />

和:

<a href="...."><img src="a.jpg" .... /></a>

变成:

<a href="...."><img src="a.jpg"></a><img src="mag.gif" />

img请注意,标签前后可能有换行符。

这是怎么做的?

4

5 回答 5

3

你可以使用after方法。

在匹配元素集中的每个元素之后插入由参数指定的内容。

$('img').after('<img src="mag.gif"/>')
于 2012-09-13T20:09:29.963 回答
2

试试这个:

$('img[src="a.jpg"]').after('<img src="mag.gif" />');

这将在每个图像之后添加放大镜图像src="a.jpg"

阅读有关 jQuery.after()方法的信息。

你也可以.insertAfter()像下面这样使用:

$('<img src="mag.gif" />').insertAfter('img[src="a.jpg"]');
于 2012-09-13T20:09:19.120 回答
1

这是您的代码:

$('img').parent().not('a').children('img:first').after('<img src="mag.gif" />')​;
$('img').parents('a:first').after('<img src="mag.gif" />');

工作演示位于http://jsfiddle.net/sURqy/

于 2012-09-13T20:16:27.453 回答
1
$.each($('img[src="a.jpg"]'), function(i) {
    var $element = $(this);
    if($element.parent('a').length) {
        $element = $element.parent();
    }
    $element.after('<img src="mag.gif"/>');
});

演示

于 2012-09-13T20:20:12.823 回答
1

这解决了你的条件逻辑

var $a_with_img = $('a').has('img');
var $img_no_a = $('img').not('a img');
var $elements = $.merge($img_no_a, $a_with_img);
$elements.after('<img src="mag.gif" />');​
于 2012-09-13T20:22:00.193 回答