Вход

Просмотр полной версии : Разница событий


bubanay
09.05.2015, 14:59
Никак не могу понять разницу между функциями:
1. window.onload
2. $(document).ready(function () { ... });
3. $(function(){...});

Я новичок, сильно камнями не кидайтесь). Объясните как можно подробнее в чем у них принципиальная разница.

Вроде вторая и третья исполняются после загрузки страницы через jquery. Первая вроде работает просто в js, но не уверен что срабатывает после загрузки страницы.

Допустим если в эти конструкции повесить события нажатия на кнопку, скрипт подгрузится в момент нажатия на кнопку или изначально при загрузки страницы?

laimas
09.05.2015, 15:27
onload - это событие после загрузки всего содержимого, включая и изображения, и прочее. А $(document).ready - возникает в момент готовности дерева DOM, то есть не ожидает загрузки изображений.
$(function(){...}); - это тоже самое, что $(document).ready(function () { ... });

bubanay
13.05.2015, 13:45
А вот такие конструкции как работают:
jQuery(function($) {...})
(function($){...})(jQuery);

jQuery(function($) {...}) точно отличается от $(function(){...});

рони
13.05.2015, 13:59
А вот такая конструкция как работает и можно ли ставить ее в head?
как обыкновенная функция -- вставить можно но если ненужны элементы страницы -- выполняется сразу

bubanay
14.05.2015, 14:49
Меня больше разница их интересует. Я думал это одно и то же. Вставлял в head скрипт для раскрывающего блока, в результате из

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

сработала только конструкция
jQuery(function($) {...})
значит точно есть какие-то отличия.

рони
14.05.2015, 15:33
bubanay,
(function($){...})(jQuery);
DOM ещё нет -- нет элементов на странице не с чем работать -- но защищена от Joomla
$(function(){...});
DOM есть но нет защиты от Joomla
jQuery(function($) {...})
страница готова и пофигу что Joomla перезапишет $

Erolast
14.05.2015, 15:40
jQuery(function($) {...}) точно отличается от $(function(){...});
$ - алиас к jQuery. $(function(){}) и jQuery(function(){}) - одно и то же, за исключением того, что второе уменьшает вероятность коллизии имен (знак доллара не только jquery в качестве сокращения использует).

(function($){...})(jQuery);
Создаем анонимную функцию с одним аргументом $ и сразу же ее вызываем с передачей jQuery параметром.