Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: вопрос о методе on()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
dadli
Отправлено: 10 Июня, 2012 - 22:19:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




приветствую
здес http://jquery[dot]page2page[dot]ru/index.php5/On читаю:
Цитата:
Метод on() введен в jQuery-1.7, чтобы объединить три метода библиотеки, устанавливающие обработчики событий на элементы страницы: .bind(), .delegate(), .live(). Сами эти методы считаются теперь устаревшими, хотя еще поддерживаться


но здес не правилно написано тот момент что ,on() объединить три метода, (и в том числе live() ), так как метод on() не сделает тоже самое, что live(). интереснее услишать ваше мнение, почему етом статие написано так?
или я ошибаю и on() тоже можно исползовать как метод live() ?
 
 Top
SAD
Отправлено: 10 Июня, 2012 - 22:32:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




можно. метод on универсален. если заглянуть в код jquery, то можно увидеть, что все старые методы сводятся к методу on
(Добавление)
CODE (javascript):
скопировать код в буфер обмена
  1. bind: function( types, data, fn ) {
  2.                 return this.[b]on[/b]( types, null, data, fn );
  3.         },
  4.  
  5. live: function( types, data, fn ) {
  6.                 jQuery( this.context ).[b]on[/b]( types, this.selector, data, fn );
  7.                 return this;
  8.         },
  9.  
  10.  

(Отредактировано автором: 10 Июня, 2012 - 22:33:49)

 
 Top
dadli
Отправлено: 10 Июня, 2012 - 22:38:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




SAD
вот например есть такои код
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready (function () {
  2.         $("#div1").on("click", function () {
  3.                 $("#div1").after("<div id='div2'>div2</div>");
  4.         });
  5.        
  6.        
  7.         $("#div2").live("click", function () {
  8.                 alert("asd");
  9.         });
  10. });

CODE (html):
скопировать код в буфер обмена
  1. <div id="div1">div1</div>

здес при клике на div1 создаем елемент div2 и потом при клике на div2 визиваем алерт, и ето спомошчю метода live(), подскажите плиз как тоже самое сделать через метода on()
 
 Top
SAD
Отправлено: 10 Июня, 2012 - 22:40:37
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. $("#div2").on("click", function () {
  2.                 alert("asd");
  3.         });
 
 Top
DelphinPRO
Отправлено: 10 Июня, 2012 - 22:46:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




dadli пишет:
или я ошибаю и on() тоже можно исползовать как метод live() ?

не совсем.

on() можно использовать как delegate()? при этом live становится не нужен

CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function(){
  2.     $('body').on('click', 'button', function(){
  3.         $('body').append('<button>button</button>');
  4.     });
  5. });

CODE (html):
скопировать код в буфер обмена
  1. <body>
  2.     <button>button</button>
  3. </body>


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
dadli
Отправлено: 10 Июня, 2012 - 22:46:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




SAD
нет, так не рабочи
(Добавление)
DelphinPRO
если честно, я не понял как связани ваш пример и мои вопрос? Улыбка что ви написали ето совсем понятно что умеет метод on(), но не понятно как исползовать метод on() в качестве live() ?
 
 Top
DelphinPRO
Отправлено: 10 Июня, 2012 - 23:28:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




все просто.
метод live работает также как delegate (надеюсь понимаете разницу между delegate и click?), НО по умолчанию ставит обработчик на самый верхний уровень иерархии DOM. в результате, благодаря "всплыванию" событий получаем, что этот обработчик проверяет кучу событий от всех элементов на предмет, тот ли это элемент, который надо обработать. Разумеется на это тратится много ресурсов. в последней версии jquery решили избавиться от этого метода, оставив возможность делегированной обработки событий через метод on


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB