使用jquery理解javascript闭包
我已经开始学习javascript闭包,在进行实验时,我意识到以下代码并没有按预期工作:使用jquery理解javascript闭包,javascript,jquery,closures,Javascript,Jquery,Closures,我已经开始学习javascript闭包,在进行实验时,我意识到以下代码并没有按预期工作: (function($){ var p='<p style="color:red">12345</p>'; $p=$(p); $("body").append($p); $p.appendTo($("body")); console.log($p); })(jQuery) (函数($){ var p='12345; $p=$(p); $(“正
(function($){
var p='<p style="color:red">12345</p>';
$p=$(p);
$("body").append($p);
$p.appendTo($("body"));
console.log($p);
})(jQuery)
(函数($){
var p='12345
;
$p=$(p);
$(“正文”)。追加($p);
$p.appendTo($(“body”);
console.log($p);
})(jQuery)
在控制台中,我可以看到jquery对象被返回,但它没有被追加到主体中(我已经尝试了append和appendto方法)
有人能给我解释一下为什么这个代码不能按预期工作吗
我有一个想法:这可能是因为调用此函数时没有加载jquery,但是,jquery对象正在输出到控制台,因此这一定意味着调用此函数时加载了jquery
任何知识渊博的人都能提供一些信息吗?确保执行脚本时
正文可用,您可以使用速记DOMRADY回调:
jQuery(function($){
var p = '<p style="color:red">12345</p>';
$p = $(p).appendTo(document.body);
console.log($p);
});
jQuery(函数($){
var p='12345
;
$p=$(p).appendTo(document.body);
console.log($p);
});
适合我吗?-jsfiddle之所以能够工作,是因为它将脚本插入到onLoad块中,因此body元素可用。如果您将小提琴更改为“无环绕(头部)”,则可以重现该问题()。在声明页面之前,脚本将立即运行。大卫有答案。$p=$(p)??为什么?还有,为什么总是使用$p?我真的不认为有必要一直使用$p<代码>jQuery(函数($){var p=$('12345
);p.appendTo($(“body”);})
也可以正常工作well@omarello或者只是$('12345
).appendTo(document.body)但是问题不是优化代码……我现在觉得自己很愚蠢。当然!尸体还没准备好!谢谢你,大卫@omarello,$p是其他测试的残留物,我只是想了解核心问题,而不是优化它,正如David正确指出的那样。