0

ページ上の DOM 要素を変更する関数があるが、同じ DOM 要素にもアクセスする場合、DOM 要素を複数回宣言しないように$(document).ready()、関数を含むすべてをラップしますか。$(document).ready()例えば:

function addContent(){
   var $someElement = $("someElement");
   //Do something with $someElement
}
$(document).ready(function(){
   var $someElement = $("someElement");
   $someElement.click(function(){ //some code });
})

一度だけ宣言する必要がaddContent()あるように、関数を の間に移動し ますか?$(document).ready()$someElement

4

5 に答える 5

1

addContent()$(document).ready(function(){})グローバル スコープで必要な場合にのみ、 の外にある必要があります。セレクターも同様です。

個人的には、可能であればどちらもグローバルスコープに入れません。つまり、onclick=属性がありません。

于 2012-08-01T21:25:19.550 に答える
0

基本的に、これを行う場合、関数を呼び出すすべてのものが内$(document).ready()にある必要があるため、長所と短所があります。どちらが良いかはあなた次第です。ケビンBが言うように、個人的には、とにかくそのスコープの外側から隠したほうがいいので、中に入れます。

于 2012-08-01T21:27:35.540 に答える
0

関数に対してjqueryを使用する必要がない場合は、

$(document).ready(function(){})
于 2012-08-01T21:27:54.140 に答える
0
// declared in global scope
var $someElement = null;

function addContent(){
   //Do something with $someElement
   $someElement.html('works!');
}

$(document).ready(function(){
   //initialized on ready
   $someElement = $("someElement");
   $someElement.click(function(){ //some code });
});

変数のスコープをグローバルに設定し、 内でその値を初期化できます.readyaddContent常に発火後に発火すると仮定すると.ready、これは問題を引き起こしませんが、jQuery で dom を操作するつもりであり、それは常に発火後に行われるため、これは非常に安全な仮定です。.ready

于 2012-08-01T21:41:47.587 に答える
0

jquery が同じ saelector へのアクセスをキャッシュし始めたというのが私の印象です (少なくとも、自分でキャッシュする必要があると不平を言うのをやめました)。一方、クラスのコンテキスト内にいて、 $(".some") が常に同じオブジェクトのセットを返すことがわかっている場合は、クラス変数に格納しても安全です。また、グローバル変数は悪なので、グローバル変数の 1 つに格納するのは得策ではありません。

于 2012-08-01T21:31:29.860 に答える