为了账号安全,请及时绑定邮箱和手机立即绑定

在 jquery 中更改变量而不重新分配

在 jquery 中更改变量而不重新分配

小唯快跑啊 2022-05-22 16:05:58
在 jquery 代码中,我将一个元素倒入一个变量中。然后通过单击btn4更改标签 < p > 的内容。然后我单击btn以按先前值复制元素,但变量也发生了更改(分配为 2),而我没有重新分配变量。为什么?我能做些什么来防止变量发生变化?在单击btn标记p后,值 2 也会从div d1中删除,为什么?let r = $("#d1 #p1");$("#btn4").click(function() {  $("#p1").html(2);});$("#btn").click(function() {  $("#d2").append(r);});#d1 {  background-color: red;  width: 130px;  height: 130px;}#d2 {  background-color: yellow;  width: 130px;  height: 130px;}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><button id='btn4'>btn4</button><button id='btn'>btn</button><div id="d1">  <p id="p1">1</p></div><div id="d2"></div>
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超3个赞

尝试这样做,只需在.html()“r”声明的末尾添加:

let r = $("#d1 #p1").html();


查看完整回答
反对 回复 2022-05-22
?
慕后森

TA贡献1802条经验 获得超5个赞

我单击 btn 以按以前的值复制元素,但变量也发生了变化(分配为 2),而我没有重新分配变量。为什么?我能做些什么来防止变量发生变化?在单击 btn 标记 p 后,值 2 也会从 div d1 中删除,为什么?


发生这种情况是因为您将现有 DOM 节点附加$("#d1 #p1")到$("#d2")并在将其从退出位置移动$("#d1")到$("#d2"). 您可以通过保存clone节点的 a$("#d1 #p1")并使用它附加如下来解决它:


let r = $("#d1 #p1");

let r2 = r.clone(); // Create a clone of current node with content


$("#btn4").click(function() {

  $("#p1").html(2);

});

$("#btn").click(function() {

  $("#d2").append(r2);

});

#d1{background-color:red;width:130px;height:50px}

#d2{background-color:#ff0;width:130px;height:50px}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button id='btn4'>btn4</button>

<button id='btn'>btn</button>

<div id="d1"><p id="p1">1</p></div>

<div id="d2"></div>


查看完整回答
反对 回复 2022-05-22
?
慕少森

TA贡献2019条经验 获得超9个赞

我不完全知道您要执行什么操作,但是下面的这一行引用了一个 DOM 元素;

let r = $("#d1 #p1").html();

通过这样做$("#d2").append(r); ,您将r元素移动到$("#d2")元素中。这就是为什么你再也看不到它了Div d1


查看完整回答
反对 回复 2022-05-22
  • 3 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号