2

jqueryの実行について疑問に思っています。存在しないIDを持っているとすると、jqueryがコードのその部分を実行しようとするのはなぜですか。

$(function() {
        $( "#datepicker_doesnotexist" ).datepicker({
         defaultDate: new Date(date_var)   
        });
    });

この場合、それdate_varは定義されていないと文句を言います。それは理解でき、それを防ぐためのチェックなどを行うことができます。

そのID(datepicker_doesnotexist)が存在しない場合に、jQueryがコードのこの部分を実行する理由を知りたいです。とにかく要素に結び付けることができない場合、このようにすることは非常に非効率的であるように思われます。

例: http: //jsfiddle.net/CdE3k/

4

3 に答える 3

3

date_varを初期化していません。これにより、エラーのスローが停止します

 $(function() {
    var date_var = new Date( 2012, 10, 25 );

    $( "#datepicker_doesnotexist" ).datepicker({
        defaultDate: date_var   
    });
 });

IDが一致する要素が見つからない場合、jQueryは要素のないjQueryオブジェクトを返します。返されたjQueryオブジェクトのdatepickerメソッドは引き続き呼び出されますが、操作するhtml要素がありません。

これは実際には良いことです。IDに一致する要素がないときにjQueryが未定義を返す場合、上記のコードはエラーをスローします。

于 2012-10-25T19:36:06.920 に答える
1

{defaultDate: new Date(date_var)}引数を渡すだけで、関数自体ではありません。

これは、次のことと同じです。

function someFunction(date) {

}

// this will result in an error because it is not defined. Same things happens in your code.
someFuntion(undefinedVariable);

簡単に言えばdate_var(たとえばページの読み込み時)まだ定義されていませんが、使用しようとしています。

于 2012-10-25T19:21:55.167 に答える
0

編集:オブジェクトをその関数.datepicker()に渡しており、オブジェクトの受け渡しの一部としてオブジェクトを評価しているために発生しています。これが予想される動作です。

于 2012-10-25T19:21:35.137 に答える