Что значит $ (function () {}); делать?

208

Иногда я делаю функцию и вызываю ее позже.

Пример:

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

Так или иначе, некоторые функции не могут быть вызваны. Я должен вызвать эти функции внутри:

$(function() { });

Что $(function() {});и (function() { });значит, и какая разница / цель этих?

jwchang
источник

Ответы:

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

это просто сокращение JQuery для

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

Помимо прочего, она предназначена для того, чтобы ваша функция вызывалась, когда все элементы DOM страницы готовы к использованию.

Однако я не думаю, что это проблема, с которой вы столкнулись - можете ли вы уточнить, что вы подразумеваете под «Каким-то образом некоторые функции не могут быть вызваны, и я должен вызывать эти функции внутри»? Может быть, опубликовать код, чтобы показать, что не работает, как ожидалось?

Изменить: Перечитывая ваш вопрос, возможно, ваша функция работает до того, как страница закончила загружаться, и поэтому не будет работать должным образом; помещение его в $ (функция) действительно исправит это!

Расс Кларк
источник
2
что если $ (function () {}); уже в $ (документ) .ready ()?
jwchang
функция не работает без $ (function (), хотя она уже в $ (document) ready ().
jwchang
Хороший вопрос! Я считаю, что это должно сработать, поскольку jQuery знает, что вы находитесь в правильном месте, но это, конечно, посторонний; если вы внутри .ready (), вы можете просто вызывать свою функцию как обычно. Если это не работает, тогда опубликуйте образец или, что еще лучше, попробуйте сделать скрипку как jsfiddle.net.
Расс Кларк
4
@JeongWooChang Сделай это так (function () { ... })();. Вы должны добавить, ()чтобы вызвать вашу функцию.
Шиме Видас
3
«Опытные разработчики иногда используют сокращение $()для $( document ).ready(). Если вы пишете код, который могут увидеть люди, не имеющие опыта работы с jQuery, лучше использовать длинную форму». - learn.jquery.com
thdoan
15

Ниже приведен вызов функции jQuery:

$(...);

Который является «функцией jQuery». $это функция, и $(...)вы вызываете эту функцию.

Первый указанный вами параметр является следующим:

function() {}

Параметр - это указанная вами функция, и $функция вызовет предоставленный метод, когда DOM завершит загрузку.

cwharris
источник
8

Это просто сокращение для $(document).ready(), как: $(document).ready(function() { YOUR_CODE_HERE });. Иногда вам нужно использовать его, потому что ваша функция работает до того, как DOM завершит загрузку.

Все объясняется здесь: http://docs.jquery.com/Tutorials:Introduction_$ (документ) .ready ()

Крис Хасиньски
источник
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 «color» значение «red»..css('color', 'red');

Терри
источник
2

Это ярлык для $(document).ready(), который выполняется, когда браузер завершил загрузку страницы (здесь означает «когда DOM доступен»). См. Http://www.learningjquery.com/2006/09/introduction-document-ready . Если вы пытаетесь позвонить example()до того, как браузер завершит загрузку страницы, он может не работать.

IMM
источник
1
«Законченная загрузка страницы» является неточной и вводящей в заблуждение.
Яэль