2012-05-21 2 views
1

jQuery(document).ready(function($){}); - это известный и отличный способ защитить $ от ошибок.Оконная загрузка окна для jQuery

Что мне интересно, если бы jQuery(window).load(function($){}); работал бы таким же образом?

В принципе, то, что я есть сейчас:

jQuery(document).ready(function($){ 

    $(window).load(function(){ 
     // ... 
    }); 

}); 

Это только кажется ненужным для меня, любые идеи об упрощении этого? Мне нужно безопасность того, JQuery правильно отображается в $ (или что-то правильный термин), но то же время, как window.load()

ответ

8

Я предпочитаю это ...

(function($){ 

    $(window).load(function(){ 
     //everything is loaded (images, scripts, etc.) 
    }); 

    // and/or 

    $(document).ready(function(){ 
     // the dom is in place, but everything is not necessarily loaded 
    }); 

})(jQuery); 

Примечание: Это будет работать только если JQuery был включен до этого сценария. Я никогда не сталкивался с какими-либо проблемами с тем, что jQuery не определен таким образом. Кроме того, у вас никогда не будет проблем с $ undefined, потому что вы передаете его в свою анонимную функцию.

9

Вы можете сделать это:

(function($) { 

    $(window).load(function(){ 
     // ... 
    }); 

})(jQuery); 

Анонимная функция будет выполнена немедленно, а не ожидая готовности DOM, как в коде в вопросе. В пределах функции $ будет ссылка на jQuery, поэтому не будет конфликтовать с любым другим $, определенным вне анонимной функции.

+0

Я дал вам один, так как вы избили меня до ответа, но ваш ответ не был выбран – lbstr

1

Вы можете создать локальный параметр:

(function($) { 
    $(...) 
})(jQuery); 

Этот код выполняет анонимную функцию с параметром имени $, передавая jQuery в качестве значения параметра.

Смежные вопросы