2013-11-15 3 views
2

Я понимаю, Jquery, спрашиваю я просто хочу, Что разница между этими 2 примерами кода (я знаю, он будет делать то же самое, но мне интересно, если есть что-то конкретное со вторым примером.

Пример 1 :

$(document).ready(function() { 
    // some code #1 
    // some code #2 
    // some code #3 
}); 

Здесь все JS в одном месте

Пример 2:.

$(document).ready(function() { 
    // some code #1 
}); 

$(document).ready(function() { 
    // some code #2 
}); 

$(document).ready(function() { 
    // some code #3 
}); 

Эти функции (DOM ready) размещаются в разных JS-файлах.

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

+1

Youre догадка верна –

+0

Как личный выбор, я бы не разделить код во многих местах. Это просто усложняет полное представление о том, что происходит. – melancia

+0

@MelanciaUK: да, это правда, но иногда вам нужно создать динамический JS-код для '$ (document).ready() ', и у вас есть встроенный код HTML. – Legionar

ответ

5

Каждая отдельная функция, переданная в $(document).ready(), создаст свою область видимости для переменных и функций, что может привести к значительной существенной разнице. Возьмите эти два примера:

$(document).ready(function() { 
    function viewEvent(event) { 
     console.log(event); 
     return false; 
    } 

    $('a').on('click', viewEvent); 
    // works fine, clicking on an <a> element will log the event object 
}); 

Тогда:

$(document).ready(function() { 
    function viewEvent(event) { 
     console.log(event); 
     return false; 
    } 
}); 


$(document).ready(function() { 
    $('a').on('click', viewEvent); 
    // won't work, viewEvent is out of scope here 
}); 
+0

Это то, о чем я просил :) – Legionar

+2

с несколькими областями часто является преимуществом. Возможно, лучшим примером будет то, что 'viewEvent' определяется дважды? –

+2

Верхний ответ. Upvoted! – melancia

3

Все обработчики документов, готовые к документу, будут называться в том порядке, в котором они связаны. В общем, я бы рекомендовал просто иметь один, чтобы держать вещи аккуратно, за исключением ...

«Эти функции (DOM) готова места в различных JS-файлов.»

Это лучшая причина, по которой я могу думать о наличии нескольких готовых обработчиков.

«Я просто думаю, как он будет обработан, но я предполагаю, что это будет выполняться после загрузки DOM, а затем в порядке, как это называется в HTML.»

Это правильно.

2

Я предполагаю, что он будет выполнен после загрузки DOM, а затем в порядке, как он вызывается в HTML.

Это правильно.

Эти функции будут сложены и называются линейными в том порядке, в котором они подключены к событию готовности DOM.

3

У вас может быть столько, сколько пожелаете, и они будут выполнены в том порядке, в котором выполняются функции или $(document).ready(). (то есть каждый обработчик добавляется в очередь).

+0

Я думаю, вы начнете исчерпывать память где-то около 10 миллионов. –

+0

@JanDvorak - Все в порядке, у меня заканчивается терпение около 9,5 миллионов. – nnnnnn

Смежные вопросы