You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery将新增元素存入变量?控制台打印newNode为何仍是父元素?

嘿,我来帮你搞定这两个jQuery的问题~

问题1:如何使用jQuery将新添加的元素存储到变量中?

有两种实用的方法可以实现这个需求:

  • 方法一:先创建新元素的jQuery对象,再追加
    先把HTML字符串转换成jQuery对象并存在变量里,再将它追加到父元素上,这样变量就会一直指向这个新元素:

    function appendNewStage() { 
      var parent = $('.ci-journey-interactions-canvas_row'); 
      // 先把HTML字符串转为jQuery对象,存在newNode变量中
      var newNode = $(`
        <ul class="ci-journey-interactions-canvas__journey-list stage"> 
          <li> 
            <span class="ci-journey-interactions-box__droppable-element ci-droppable"></span> 
          </li> 
        </ul>
      `);
      // 将新元素追加到父元素中
      parent.append(newNode); 
      console.log(newNode.html()); // 现在能正确输出新元素的内容啦
    } 
    appendNewStage();
    
  • 方法二:用appendTo()替代append()
    jQuery的appendTo()方法会返回被追加的新元素(而非父元素),所以可以直接把它存到变量里:

    function appendNewStage() { 
      var parent = $('.ci-journey-interactions-canvas_row'); 
      var newStage = `
        <ul class="ci-journey-interactions-canvas__journey-list stage"> 
          <li> 
            <span class="ci-journey-interactions-box__droppable-element ci-droppable"></span> 
          </li> 
        </ul>
      `; 
      // appendTo返回的是新创建的元素,直接赋值给newNode
      var newNode = $(newStage).appendTo(parent); 
      console.log(newNode.html()); 
    } 
    appendNewStage();
    
问题2:执行代码时控制台打印newNode输出的仍是父元素,原因是什么?

核心原因是jQuery的append()方法返回的是调用它的原DOM元素(也就是你的parent变量),而不是新添加的元素。

你代码里的var newNode = $(parent).append(newStage);,本质上是把parent的引用赋值给了newNode——虽然新元素已经被追加到父元素里,但newNode指向的还是父元素本身,所以console.log(newNode.html())打印的自然是父元素的内容(包含新追加的子元素,但newNode的身份还是父元素)。

解决这个问题的话,直接用上面问题1里的两种方法就行,先把新元素转成jQuery对象再操作,或者用appendTo()来获取新元素的引用。


内容的提问来源于stack exchange,提问作者sonu sasankan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:16:36