Що означає $ (function () {}); робити?


208

Іноді я роблю функцію і дзвоню їй пізніше.

Приклад:

function example { alert('example'); }
example(); // <-- Then call it later

Якимсь чином деякі функції не можна викликати. Я повинен викликати ці функції всередині:

$(function() { });

Що означають $(function() {});і що (function() { });означають, і в чому різниця / мета цих?

Відповіді:


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

це просто короткий хід jQuery

$(document).ready(function() { ... });

Те, що він призначений робити (серед іншого), це забезпечити виклик вашої функції, коли всі елементи DOM сторінки будуть готові до використання.

Однак я не думаю, що це проблема у вас - чи можете ви уточнити, що ви маєте на увазі під «Якимось чином, деякі функції не можна викликати, і я повинен викликати ці функції всередині»? Можливо, опублікуйте якийсь код, щоб показати, що не працює, як очікувалося?

Редагувати: перечитавши своє запитання, можливо, ваша функція працює до того, як сторінка закінчиться, і тому не виконає належним чином; введення цього в $ (функцію) справді це виправить!


2
що робити, якщо $ (function () {}); вже в $ (документ) .ready ()?
jwchang

функція не працює без $ (function (), хоча вона вже є в $ (document) ready ().
jwchang

Гарне питання! Я вважаю, що це має просто працювати, оскільки jQuery знає, що ти в потрібному місці, але це, звичайно, стороння; якщо ви всередині .ready () ви можете просто викликати свою функцію як звичайну. Якщо це не працює, опублікуйте зразок, а ще краще - спробуйте зробити загадку як jsfiddle.net.
Russ Clarke

4
@JeongWooChang Роби це так (function () { ... })();. Ви повинні додати, ()щоб викликати свою функцію.
Šime Vidas

3
«Досвідчені розробники іноді використовують скорочений $()для $( document ).ready(). Якщо ви пишете код , що люди , які не зазнали з JQuery можуть побачити, що краще використовувати довгу форму.» - learn.jquery.com
thoan

15

Далі йде виклик функції jQuery:

$(...);

Що є "функцією jQuery". $це функція, і $(...)ви її називаєте.

Перший наданий вами параметр:

function() {}

Параметр - це функція, яку ви вказали, і $функція викликає наданий метод, коли DOM закінчить завантаження.



5

Я думаю, що ви можете плутати Javascript з методами jQuery. Ванільний або звичайний Javascript - це щось на зразок:

function example() {
}

Функцію такого характеру можна назвати в будь-який час і в будь-якому місці.

jQuery (бібліотека, побудована на Javascript) має вбудовані функції, які, як правило, вимагають, щоб DOM був повністю виведений перед викликом. Синтаксис, коли це завершено:

$(document).ready(function() {
});

Отже, функція jQuery, яка є префіксом $слова або, як jQueryправило, викликається з цього методу.

$(document).ready(function() {        
    // Assign all list items on the page to be the  color red.  
    //      This does not work until AFTER the entire DOM is "ready", hence the $(document).ready()
    $('li').css('color', 'red');   
});

Псевдокод для цього блоку:

Коли модель об’єкта документа $(document)готова .ready(), викличте наступну функцію function() { }. У цій функції перевірте наявність усіх <li>на сторінці $('li')та за допомогою методу jQuery .CSS () встановіть для кольору властивості CSS значення "червоний"..css('color', 'red');


2

Це ярлик для $(document).ready(), який виконується, коли браузер закінчує завантаження сторінки (мається на увазі тут, "коли DOM буде доступний"). Дивіться http://www.learningjquery.com/2006/09/introducing-document-ready . Якщо ви намагаєтесь зателефонувати example()до того, як браузер закінчить завантаження сторінки, це може не спрацювати.


1
"завершено завантаження сторінки" є неточним та оманливим.
Яхель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.