Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.06.2013, 12:49
Аватар для BK201
Аспирант
Отправить личное сообщение для BK201 Посмотреть профиль Найти все сообщения от BK201
 
Регистрация: 05.07.2010
Сообщений: 32

Двойная инициализация функции
Здравствуйте!

Столкнулся с такой проблемой:
есть список итемов
<ul>
   <li>Item-1
<li>Item-2
<li>Item-3
</ul>


На которые вешается событие по клику

$('ul li').bind('click', function(e, data){...}


С помощью JS добавляем в конец еще 1 итем <li>Item-4
$('<li>Item-4')appendTo($('ul'));


И вот проблема в том, что на этот новый итем уже не работает событие, которое повесил на другие.
Если я опять запущу инициализацию события, то Item-4 - работает, но Item 1-3 будут воспринимать по 2 клика.

Скорее всего, я что-то делаю не так. Как нужно цеплять событие на новый итем?
Ответить с цитированием
  #2 (permalink)  
Старый 24.06.2013, 13:15
Профессор
Отправить личное сообщение для mta88 Посмотреть профиль Найти все сообщения от mta88
 
Регистрация: 16.05.2013
Сообщений: 229

для этого есть метод 'on', простой и гениальный, и новые обработчики не нужны
$('ul').on('click', 'li', function() {})

this внутри функции будет указывать на 'li'
Ответить с цитированием
  #3 (permalink)  
Старый 24.06.2013, 13:15
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

уже написали
Ответить с цитированием
  #4 (permalink)  
Старый 24.06.2013, 13:21
Интересующийся
Отправить личное сообщение для AfraidAlex Посмотреть профиль Найти все сообщения от AfraidAlex
 
Регистрация: 21.05.2013
Сообщений: 19

Сообщение от BK201 Посмотреть сообщение
Здравствуйте!

Столкнулся с такой проблемой:
есть список итемов
<ul>
   <li>Item-1
<li>Item-2
<li>Item-3
</ul>


На которые вешается событие по клику

$('ul li').bind('click', function(e, data){...}


С помощью JS добавляем в конец еще 1 итем <li>Item-4
$('<li>Item-4')appendTo($('ul'));


И вот проблема в том, что на этот новый итем уже не работает событие, которое повесил на другие.
Если я опять запущу инициализацию события, то Item-4 - работает, но Item 1-3 будут воспринимать по 2 клика.

Скорее всего, я что-то делаю не так. Как нужно цеплять событие на новый итем?
Сообщение от mta88 Посмотреть сообщение
для этого есть метод 'on', простой и гениальный, и новые обработчики не нужны
$('ul').on('click', 'li', function() {})

this внутри функции будет указывать на 'li'
либо задать очередность. Сначала добавлять новый li, потом уже вешать обработчик.

p.s. у вас(автор) ужасный код, советую почитать спецификацию html и js
Ответить с цитированием
  #5 (permalink)  
Старый 24.06.2013, 13:35
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

а как же live??
http://jquery-docs.ru/events/live/
Ответить с цитированием
  #6 (permalink)  
Старый 24.06.2013, 13:50
Профессор
Отправить личное сообщение для mta88 Посмотреть профиль Найти все сообщения от mta88
 
Регистрация: 16.05.2013
Сообщений: 229

Сообщение от skrudjmakdak Посмотреть сообщение
а как же live??
"live" deprecated с 1.7 и удалена в 1.9
Ответить с цитированием
  #7 (permalink)  
Старый 24.06.2013, 13:50
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от skrudjmakdak Посмотреть сообщение
а как же live??
http://jquery-docs.ru/events/live/
As of jQuery 1.7, the .live() method is deprecated
Ответить с цитированием
  #8 (permalink)  
Старый 24.06.2013, 14:02
Аватар для BK201
Аспирант
Отправить личное сообщение для BK201 Посмотреть профиль Найти все сообщения от BK201
 
Регистрация: 05.07.2010
Сообщений: 32

Сообщение от mta88 Посмотреть сообщение
для этого есть метод 'on', простой и гениальный, и новые обработчики не нужны
$('ul').on('click', 'li', function() {})

this внутри функции будет указывать на 'li'
Точно! Спасибо!)))
Цитата:
p.s. у вас(автор) ужасный код, советую почитать спецификацию html и js
читаем. учимся.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установить имя конструктора Андрей Параничев Общие вопросы Javascript 8 17.11.2011 10:09
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26
динамическое содержимое функции alfmaster Общие вопросы Javascript 2 28.05.2011 17:10
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03