我有一个简单的图像列表,通过CMS(ExpressionEngine)进行控制。像这样:
<div class="wrapper">
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
</div>
我想要做的是每5张图片,用一类“幻灯片”将它们包装在一个div中。看起来像这样:
<div class="wrapper">
<div class="slide">
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
</div>
<div class="slide">
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
<a href="#"><img src="#" /></a>
</div>
</div>
我没有手动编码“”的原因是因为我使用的jQuery内容滑块需要将每5个图像包装在幻灯片div中。
我不确定ExpressionEngine中的代码是如何做到这一点的,但我认为使用Javascript用div包装每5个图像可能更容易。只需让ExpressionEngine一次输出不同的图像。
任何帮助?
答案 0 :(得分:23)
这是一种方式:
示例: http://jsfiddle.net/T6tu4/
$('div.wrapper > a').each(function(i) {
if( i % 5 == 0 ) {
$(this).nextAll().andSelf().slice(0,5).wrapAll('<div class="slide"></div>');
}
});
这是另一种方式:
示例: http://jsfiddle.net/T6tu4/1/
var a = $('div.wrapper > a');
for( var i = 0; i < a.length; i+=5 ) {
a.slice(i, i+5).wrapAll('<div class="slide"></div>');
}
答案 1 :(得分:4)
您可以为每个第五个元素创建一个div,并使用append
方法将链接移动到它们中:
var wrapper = $('.wrapper');
var div;
$('a', wrapper).each(function(i,e){
if (i % 5 == 0) div = $('<div/>').addClass('slide').appendTo(wrapper);
div.append(e);
});
答案 2 :(得分:1)
我认为这样做会:
var links = $('.wrapper').children();
for (var i = 0, len = links.length; i < len; i += 5) {
links.slice(i, i + 5).wrapAll('<div class="slide"/>');
}
答案 3 :(得分:1)
试试这个:
$(function(){
var curDiv = null;
var mainDiv = $("div.wrapper");
$("span", mainDiv).each(function(i, b){
if(i%5 == 0) {
curDiv = $("<div class='slide'/>").appendTo(mainDiv);
}
curDiv.append(b);
});
});
答案 4 :(得分:0)
你需要使用jQuery slice和wrap
答案 5 :(得分:0)
使用slice()选择元素子集,然后使用wrapAll()将div包围起来。这是一个功能。
var wrapEveryN = function(n, elements, wrapper) {
for (var i=0; i< elements.length; i+=n) {
elements.slice(i,i+n).wrapAll(wrapper);
}
}
wrapEveryN( 5, $(".wrapper a"), '<div class="slide"></div>' );
请注意,slice的第二个参数可能超出范围,但jQuery似乎会自动处理它。