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 に答える