Jquery 追加到documentFragment时出错
我在创建文档片段、向其添加元素并返回该片段时出错。我在过去使用过文档片段(在本例之外滥用它们),从未遇到过这个错误。在开发人员控制台中,它将此列为错误源:Jquery 追加到documentFragment时出错,jquery,Jquery,我在创建文档片段、向其添加元素并返回该片段时出错。我在过去使用过文档片段(在本例之外滥用它们),从未遇到过这个错误。在开发人员控制台中,它将此列为错误源: fragment.appendChild($balanceNumber, $balanceSign); 错误 Uncaught NotFoundError:尝试在不存在节点的上下文中引用该节点 功能 var constructBalanceFragment = function(balance) { var $balanceNumb
fragment.appendChild($balanceNumber, $balanceSign);
错误
Uncaught NotFoundError:尝试在不存在节点的上下文中引用该节点
功能
var constructBalanceFragment = function(balance) {
var $balanceNumber, $balanceSign, fragment, sign;
fragment = document.createDocumentFragment();
$balanceNumber = $('<span class="balance_number"></span>');
$balanceSign = $('<span class="balance_sign"></span>');
if (balance > 0) {
sign = "+";
$balanceSign.addClass("positive_number");
} else if (balance < 0) {
sign = "-";
$balanceSign.addClass("negative_number");
} else {
sign = "";
}
$balanceNumber.text(balance);
$balanceSign.text(sign);
fragment.appendChild($balanceNumber, $balanceSign);
return fragment;
解决问题
我通过使用
$object.appendTo(fragment)
vsfragment.appendChild($object)
修复了这一问题。这更接近于您的原始版本,并且似乎有效,保持了jQuery的精神:
$(fragment).append($balanceNumber, $balanceSign);
$balanceNumber
是jQuery对象,而不是节点。而.appendChild()
只接受一个参数。我已经将jquery对象附加到文档片段中,从来没有遇到过问题。查看旧代码时,它看起来像过去一样,我已经完成了$object.appendTo(fragment)
。这真的有区别吗?我将测试并更新。appendTo()
是一个jQuery方法,它(大概)在一个jQuery对象上运行。显然jQuery将接受文档片段作为容器,尽管文档似乎并不明确支持它。更短。我调整了小提琴,所以它实际上是在处理数字。嗯。
$(fragment).append($balanceNumber, $balanceSign);