Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 追加到documentFragment时出错_Jquery - Fatal编程技术网

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)
vs
fragment.appendChild($object)
修复了这一问题。这更接近于您的原始版本,并且似乎有效,保持了jQuery的精神:

$(fragment).append($balanceNumber, $balanceSign);

$balanceNumber
是jQuery对象,而不是节点。而
.appendChild()
只接受一个参数。我已经将jquery对象附加到文档片段中,从来没有遇到过问题。查看旧代码时,它看起来像过去一样,我已经完成了
$object.appendTo(fragment)
。这真的有区别吗?我将测试并更新
。appendTo()
是一个jQuery方法,它(大概)在一个jQuery对象上运行。显然jQuery将接受文档片段作为容器,尽管文档似乎并不明确支持它。更短。我调整了小提琴,所以它实际上是在处理数字。嗯。
$(fragment).append($balanceNumber, $balanceSign);