jQuery-有条件地附加HTML
jQuery - conditionally append HTML
我正试图在div中的每个图像后面附加一张放大镜的图片。其中一些图像是链接的,在这种情况下,我希望它将其附加在img
标签后面的</a>
之后。
如何制作:
<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
标记前后可能存在换行符。
这是怎么做到的?
您可以使用after
方法。
在匹配元素集中的每个元素之后插入由参数指定的内容。
$('img').after('<img src="mag.gif"/>')
试试这个:
$('img[src="a.jpg"]').after('<img src="mag.gif" />');
这将在src="a.jpg"
的每个图像之后添加放大玻璃图像。
阅读jQuery.after()
方法。
您也可以使用.insertAfter()
,如下所示:
$('<img src="mag.gif" />').insertAfter('img[src="a.jpg"]');
$.each($('img[src="a.jpg"]'), function(i) {
var $element = $(this);
if($element.parent('a').length) {
$element = $element.parent();
}
$element.after('<img src="mag.gif"/>');
});
演示
这解决了您的条件逻辑
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" />');
这是您的代码:
$('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/.
相关文章:
- 通过js在新选项卡中有条件地打开url
- jQuery-有条件地附加HTML
- 有条件更新d3.js力图中节点的最佳方法
- 有条件地运行javascript函数-Razor,HTML
- 在 React.js 中有条件地设置 html 属性
- 根据客户端变量的状态有条件地启用/禁用 @Html.DropDownListFor
- 我如何有条件地在 React 中的某些 HTML 中间包含一个标签
- 使 HTML onClick 事件有条件
- 在HTML文件中有条件地运行JS脚本
- 在指令'内的ng重复中编译有条件插入的html;s模板
- 正则表达式有条件地去除 HTML 标记内容
- 有条件地移动html元素
- 有条件地信任angular scope变量中的html
- 如何在HTML的head元素中有条件地呈现CSS和JavaScript
- 有条件地应用HTML标记
- jQuery根据.html('string')值有条件地更改事件
- 有条件删除html节点
- 使用Angular表达式有条件地将字符串添加到HTML中
- 如何在HTML/Javascript中有条件地隐藏表行
- 根据资源绑定键的存在,有条件地显示HTML块