Page 49 - jQuery для начинающих
P. 49
Первое условие решается просто:
$('a[href^=\\/]').on('click', function() {
var url = $(this).attr('href');
$('body').load(url + ' body > *');
return false;
});
Для наглядности, условимся, что внутренние ссылки содержат относительные
пути от корня сайта.
Со вторым условием чуть-чуть посложнее ситуация, но тоже вполне решаема:
$('body').on('click', 'a[href^=\\/]', function() {
var url = $(this).attr('href');
$('body').load(url + ' body > *');
return false;
});
Отличий не так уж и много, проясню происходящее:
— первым делом на элемент body будет повешен обработчик события click
— данный обработчик будет срабатывать только в том случае, когда событие будет
относится к элементу a
Работа данной схемы базируется на «всплытии» событий, так что используя метод
event.stopPropagation() вы сможете предотвратить выполнение «живых» обработчиков
Лирическое отступление к истории: жил да был когда-то плагин для jQuery,
назывался live, позволял он вешать обработчики на элементы DOM дерева
которых ещё нет (подгружаемые AJAX’ом или ещё как), а потом он умер его
внесли в само ядро. Метод live() к тому времени работал лишь с document.
Затем появился метод delegate() который научился вешать обработчик на
произвольный элемент, а затем и он был поглощён методом on(). Так что не
пугайтесь сильно, если встретите старый, адаптировать под новые версии
jQuery его будет не так уж и сложно (ну я на это надеюсь)
49
www.trk.kg