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
   44   45   46   47   48   49   50   51   52   53   54