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


208

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

Пример:

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

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

$(function() { });

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

Ответы:


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 завершит загрузку.



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()до того, как браузер завершит загрузку страницы, он может не работать.


1
«Законченная загрузка страницы» является неточной и вводящей в заблуждение.
Яэль
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.