我正在写一个脚本
- 取元素
- 将这些元素拆分为更小的子数组
- 用 a 包装这些子数组
<div>
我有这个工作:
var elems = $('p');
content = [];
temp = [];
for(var i = 0; i < elems.length; i++) {
var elem = elems[i];
temp.push(elem);
if (i === 2 || i+1 === elems.length) {
content.push(temp);
temp = [];
}
};
console.log(content);
$.each(content, function(i) {
var elem = $(this);
elem.wrapAll($('<div class="wrapper"></div>'));
});
看到这个小提琴 这使用了一个包含元素的对象
但是,当我返回 jQuery 对象而不仅仅是元素时,wrapAll()
函数突然中断,抛出 TypeError:Value does not implement interface Node.
而其他函数(替换 wrapAll)不会中断(如 wrap() 或 wrapInner())。
代码:
var elems = $('p');
content = [];
temp = [];
for(var i = 0; i < elems.length; i++) {
var elem = $(elems[i]);
temp.push(elem);
if (i === 2 || i+1 === elems.length) {
content.push(temp);
temp = [];
}
};
console.log(content);
$.each(content, function(i) {
$(this).wrapAll($('<div class="wrapper"></div>'));
});
看到这个 Fiddle(fiddle 抛出另一个 TypeError: context is undefined,但我认为这是由于 jsfiddle 使用框架的方式)。
我可能接近这个错误吗?但是 wrapAll 不应该工作吗?(用第二个小提琴中的 wrap() 替换它,这样就可以了)