2013-08-21 4 views
1

я уже знаю о преимуществах упаковки вашего Javascript в функции, как это:Передача функции на селектор JQuery

(function() { 
    // code goes here 
}()) 

Но я видел несколько сценариев, которые выполнение этого, передавая функцию обертки к JQuery объект:

$(function() { 
    // blah blah blah blah blah 
}); 

Что преимущество делает это таким образом, или это всего лишь вопрос личного вкуса? И делает ли это второй способ отрицать необходимость в $(document).ready()?

+2

Это первая одна функция, которая выполняется сразу же, второй синтаксис JQuery выполнить что-то на загрузке страницы, и да, это замена для $ (document) .ready() – mplungjan

+4

Вторая такая же, как '$ (document) .ready()'. Читайте здесь в документах http://api.jquery.com/ready/ – elclanrs

ответ

0

Первый

(function() { 
    // code goes here 
}()) 

That is self executing function.

И вторая функция - jquery.

If you see the docs

Метод .ready() может быть вызван только для объекта JQuery, соответствующего текущий документ, поэтому селектор может быть опущен.

Метод .ready() обычно используется с анонимной функцией:

$(document).ready(function() { 
    // Handler for .ready() called. 
}); 

Что эквивалентно вызову:

$(function() { 
    // Handler for .ready() called. 
    }); 
0

Вашего первый пример просто стандартный JavaScript самостоятельной функции выполнения, вторая является JQuery специфичного и ярлык для $(document).ready(function() {});

см the jQuery documentation

, а также this question для получения дополнительной информации о самостоятельном выполнении функций

0

(function(){}()) является IIFE (Сразу-Срабатывает функция Expression) и это просто функция, выполняемая немедленно
$(function(){}) - это обратный вызов jQuery, когда браузер готов

я часто добавить JQuery на сайты, которые имеют MooTools на них так, чтобы избежать $ конфликтов я делать Somthing так:

;(function($, app, undefined){ 
    // code here 
}(jQuery, myApp = window.myApp || {})) 
Смежные вопросы