我有这样的结构。
<ul class="gallerylist">
<li>
<image ...>
<input ...>
</li>
<li>
<image ...>
<input ...>
</li>
<li>
<image ...>
<input ...>
</li>
<p style="clear:both;"> </p>
</ul>
因为视觉纠正我必须使用<p style="clear:both;"> </p>
部分,并且我通过JQuery动态添加新的列表项:
$('ul.gallerylist').append('<li><img .../><br/><input .../></li>');
但是你可以猜到它是在<p style="clear:both;"> </p>
部分之后附加的,它会破坏视觉矫正。
我的问题是:在最后但在p
代码之前将ul添加到ul中的方式是正确的吗?
答案 0 :(得分:3)
我认为您的HTML标记无效,无法像p
那样将ul
置于{I}之内。最好将p
包裹在另一个li
中并使用CSS
来完成你的工作。
例如:
的 HTML 强> 的
<ul class="gallerylist">
<li>
<img src="">
<input type="text">
</li>
<li>
<img src="">
<input type="text">
</li>
<li>
<img src="">
<input type="text">
</li>
<!-- wrap within li and assign a class to that li-->
<li class="makeclear">
<p> </p>
</li>
</ul>
的 CSS 强> 的
/* apply css to that li*/
.makeclear{
clear:both;
}
的的jQuery 强> 的
$('ul.gallerylist li.makeclear')
.before('<li><img src=""/><br/><input type="text"/></li>');
<强> DEMO 强>
阅读.before(),它将通过选择器在匹配的元素之前插入一个元素。
或强>
$('<li><img src=""/><br/><input type="text"/></li>')
.insertBefore('ul.gallerylist li.makeclear');
<强> DEMO 强>
阅读jQuery .insertBefore()
但是,有效的标记是必要的,否则IE会让你发疯。下面的评论可以为您提供一些线索。
答案 1 :(得分:1)
P
代码不是UL
的有效子代,因此您的HTML无效
您需要将P
更改为LI
您可以为其设置不同的课程
现在您需要在最后LI
$('ul.gallerylist li:last').before('<li><img .../><br/><input .../></li>');