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 :: Пере селектить

 PHP.SU

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


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

> Без описания
dubasua
Отправлено: 20 Апреля, 2013 - 16:41:38
Post Id



Посетитель


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


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




Доброго времени суток.
есть html
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div id=wrap>
  3.    <ul class='list'>
  4.         <li>Some text</li>
  5.         <li>Some text</li>
  6.         <li>Some text</li>
  7.    </ul>
  8. </div>
  9.  


Подключен js
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. wrap = $("#wrap");
  3. elems = $(".list li");
  4.  

По клику на по списку выполняется некая функция
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. elems.click(function(){
  3.  
  4. });
  5.  

На странице есть еще одна функция которая перезагружает список
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. some_function (new_list) {
  3. elems.remove();
  4. wrap.html(new_list);
  5. elems =  $(".list li");
  6. }
  7.  

Содержимое переменной new_list
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <ul class='list'>
  3.      <li>Some text2</li>
  4.      <li>Some text2</li>
  5.      <li>Some text2</li>
  6. </ul>
  7.  

Вопрос: При перезагрузке списка отваливается событие по клику. Как переназначить elems что бы elems.click() работал с новым списком?
 
 Top
DelphinPRO
Отправлено: 20 Апреля, 2013 - 17:07:32
Post Id



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


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


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




простой вариант. рабочий, но неверный идеологически - назначить обработчик снова
CODE (javascript):
скопировать код в буфер обмена
  1. some_function (new_list) {
  2.   elems.remove();
  3.   wrap.html(new_list);
  4.   elems =  $(".list li");
  5.   elems.click(function(){
  6.  
  7.   });
  8. }


Правильный варинт - использовать делегированную обработку событий.

(Отредактировано автором: 20 Апреля, 2013 - 17:11:15)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
dubasua
Отправлено: 20 Апреля, 2013 - 17:10:38
Post Id



Посетитель


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


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




Спасибо
 
 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