0

我只是好奇为什么这段代码不起作用。

我在函数中看不到$note变量hey()

function hey(kc) {
$note.html(kc);
 }

$(function () {

 var $note = $('#note');    
 hey("Joice");

 });

一个玩弄http://jsfiddle.net/VcdxB/的小提琴

4

5 回答 5

2

在函数内部使用 var 关键字时,您声明了一个仅在函数范围内可见的局部变量(函数本身和内部的其他函数)。

于 2013-07-19T14:18:49.780 回答
1

正如其他人所说,这是一个范围问题。这是我缓存 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);
}
于 2013-07-19T14:23:26.070 回答
1

您需要使变量范围全局,使用这个:

var $note;

function hey(kc) {
    $note.html(kc);
}

$(function () {
     $note = $('#note');    
     hey("habi");
});
于 2013-07-19T14:20:07.417 回答
1

因为它对于绑定到事件的函数是本地的。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");
});
于 2013-07-19T14:18:47.930 回答
1

$note 变量的范围仅限于 document.ready() 函数。您需要将其移到外部$(function () etc...才能正确确定其范围。然后您可以在该函数中分配它。

var $note;    

$(function () {
    $note =  $('#note');
    hey("habi");
});
于 2013-07-19T14:18:49.087 回答