当我尝试使用 构建一系列断开连接的 DOM 节点.after
时,如果它们为空,它可以正常工作:
[14:56:45.186] $('<span></span>').after('<p></p>');
[14:56:45.193] ({0:({}), length:2, prevObject:{0:({}), length:1}, context:(void 0), selector:".after([object Arguments])", 1:({})})
但是,如果我尝试在第一个节点中添加任何文本,则会失败:
[14:56:41.521] $('<span>test</span>').after('<p></p>');
[14:56:41.525] ({0:({}), length:1})
如果我将该结果分配给一个变量并尝试检查它,它看起来好像after
根本没有被调用过。
这里发生了什么,我该如何解决?
编辑:对于那些感兴趣的人,我最终编写了以下包装器,这似乎让我的生活变得更加轻松:
function tag(name) {
return function(contents, options) {
var o = options || {};
var is_array = $.type(contents) === "array";
if (!is_array) {
o.text = contents;
}
result = $('<' + name + ' />', o);
if (is_array) {
$.each(contents, function(i, child) { result.append(child); });
}
return result;
}
}
var span = tag('span');
var div = tag('div');