【问题标题】:why can i access jQuery's clone(true,true) even after i exit the function it was called in?为什么即使在我退出调用它的函数之后,我也可以访问 jQuery 的克隆(true,true)?
【发布时间】:2015-07-31 01:06:29
【问题描述】:

我使用 jQuery 的 clone(true,true) 方法来克隆我的元素并将其存储在函数内的变量 newElem 中。但是,这是在单击按钮时完成的(在函数内部)。

$("#btnAdd").click(function(){var newElem=$('#student1').clone(true,true) })

我意识到即使在我退出函数之后,也可以访问 newElem 变量(其中存储了克隆)。尽管我的代码可以按我的意愿工作,但我很困惑为什么在函数中声明的变量即使在我退出后也可以被调用。

有人可以解释一下它是否只是 clone() 的一个功能才能使其正常工作/我错了吗?

谢谢

【问题讨论】:

  • 上面的代码不应该是这样的......这是真正的代码吗?
  • 嗨,这只是我的代码的一部分。我的整个代码很长,所以没有包含它..

标签: jquery clone


【解决方案1】:

如果您的代码如下所示:

$("#btnAdd").click(function(){
    var newElem=$('#student1').clone(true,true);
});

// newElem is not available here

那么,这里的newElem 变量是一个局部变量,并且仅在该函数的特定调用中可用。它在回调函数的范围内声明,并且仅在该函数中可用,除非您在调用其他函数时将其值传递给其他函数。

我意识到newElem 变量(其中存储了克隆)是 即使在我退出该功能后也可以访问。

您可能对此有误。 newElem 变量在回调函数之外不可用。由于您所展示的内容可能是您真实代码的精简版本(因为您所展示的内容实际上并没有做任何有效的事情),您的真实代码中可能还有其他东西会影响这里的行为,您将不得不向我们展示更多上下文以帮助您理解这一点。例如,如果您在此回调函数中创建了一些引用 newElem 的闭包,那么它将在您的回调函数中保持活动状态,直到这些闭包不再处于活动状态。但是,我们需要查看您的其余真实代码才能对此进行进一步评论。

有人可以解释一下它是否只是 clone() 的一个功能,以使其工作 这样/我错了吗?

这与.clone() 无关。它的行为方式是 Javascript 语言的设计方式。

【讨论】:

  • 哦,好吧..我刚刚重新检查了我的代码,发现了“错误”..thanks-@jfriend00
猜你喜欢
  • 2021-11-30
  • 2015-01-04
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
相关资源
最近更新 更多