Что значит $ (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.