我只是好奇为什么这段代码不起作用。
我在函数中看不到$note
变量hey()
function hey(kc) {
$note.html(kc);
}
$(function () {
var $note = $('#note');
hey("Joice");
});
我只是好奇为什么这段代码不起作用。
我在函数中看不到$note
变量hey()
function hey(kc) {
$note.html(kc);
}
$(function () {
var $note = $('#note');
hey("Joice");
});
在函数内部使用 var 关键字时,您声明了一个仅在函数范围内可见的局部变量(函数本身和内部的其他函数)。
正如其他人所说,这是一个范围问题。这是我缓存 jQuery 对象的模式:
// global scope
// single hash to hold all reference to cached jQuery objects
var $jq = {};
$(function() {
$jq.note = $('#note');
$jq.name = $('#name');
});
function hey(kc) {
$jq.note.html(kc);
}
您需要使变量范围全局,使用这个:
var $note;
function hey(kc) {
$note.html(kc);
}
$(function () {
$note = $('#note');
hey("habi");
});
因为它对于绑定到事件的函数是本地的。ready
检查这个:http: //jsfiddle.net/VcdxB/1/
function hey(kc) {
$note.html(kc);
}
// now it will be visible in both functions
var $note = $('#note');
$(function () {
hey("habi");
});
$note 变量的范围仅限于 document.ready() 函数。您需要将其移到外部$(function () etc...
才能正确确定其范围。然后您可以在该函数中分配它。
var $note;
$(function () {
$note = $('#note');
hey("habi");
});