Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.01.2010, 13:04
Новичок на форуме
Отправить личное сообщение для vipka Посмотреть профиль Найти все сообщения от vipka
 
Регистрация: 16.11.2009
Сообщений: 5

Не работают события в подгруженых динамически элементах
натолкнулся на такую проблему...

есть <select...> при изменение пунктов которого подгружается хтмл код с помощью примерно такого: $("#description").html('бла бла бла');

в этом подгружаемом html коде есть еще один селект, и вот на него уже событие change не реагирует

$("#item").change(function()
	{
		alert("test");
	});


подскажите как можно обработать события у второго селекта?
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2010, 13:18
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,381

Используйте метод live
Ответить с цитированием
  #3 (permalink)  
Старый 21.01.2010, 13:22
Новичок на форуме
Отправить личное сообщение для vipka Посмотреть профиль Найти все сообщения от vipka
 
Регистрация: 16.11.2009
Сообщений: 5

спасибо) уже нашел.

надо было так:

$("#item").live("change",function()
{
     alert("test");
});
Ответить с цитированием
  #4 (permalink)  
Старый 21.01.2010, 13:36
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

С появлением метода live резко возросла вероятность получить jQuery головного мозга
Ответить с цитированием
  #5 (permalink)  
Старый 21.01.2010, 14:26
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,381

Сообщение от Octane Посмотреть сообщение
С появлением метода live резко возросла вероятность получить jQuery головного мозга

Меня больше всего в live удивляет( и восхищает) что обработчики меняются элементам при изменениях в DOM.
Ответить с цитированием
  #6 (permalink)  
Старый 21.01.2010, 16:58
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Что? Ничего там не меняется, это банальное навешивание листенера на родителя. Мало того, в 1.3.2 даже не осилили навешивать на контекст, а биндили аж на document. В 1.4 вроде бы уже пофиксили. )
Ответить с цитированием
  #7 (permalink)  
Старый 21.01.2010, 22:06
Новичок на форуме
Отправить личное сообщение для vipka Посмотреть профиль Найти все сообщения от vipka
 
Регистрация: 16.11.2009
Сообщений: 5

наткнулся на очередную стену для меня.

теперь у подгруженых элементов не могу сменить атрибут(

$('.ctrlHolder').attr("class",$('.ctrlHolder').attr("class") + " error");


тут как я понимаю live уже не поможет... может кто нить подскажет?
Ответить с цитированием
  #8 (permalink)  
Старый 22.01.2010, 10:37
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,381

Сообщение от vipka Посмотреть сообщение
наткнулся на очередную стену для меня.
Этот код корректен только если такой элемент(.ctrlHolder) один.
А в общем надо:
$('.ctrlHolder').attr("class",
function(){
    return this.className + ' error';
    /* // или так тоже можно
    return $(this).attr('class') + 'error';
   */
});

Сообщение от elf;
Что? Ничего там не меняется, это банальное навешивание листенера на родителя.
да я подозревал что там что-то хитрое, но как это сделано все таки не важно, главное как это работает.

Последний раз редактировалось micscr, 22.01.2010 в 15:08. Причина: Добавил пробел: ' error' для корректности, а так решение постом ниже
Ответить с цитированием
  #9 (permalink)  
Старый 22.01.2010, 13:48
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Вротмненоги, да вы что, документацию даже не открываете?
$('.ctrlHolder').addClass('error')

Ну точно jQuery головного мозга.
Ответить с цитированием
  #10 (permalink)  
Старый 22.01.2010, 15:03
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,381

Сообщение от e1f Посмотреть сообщение
Вротмненоги, да вы что, документацию даже не открываете?
$('.ctrlHolder').addClass('error')

Ну точно jQuery головного мозга.
Я пробел не заметил ... Я так понял у него у элементов классы например xx, yy, zz, а в определенный момент надо чтобы стали xxerror, yyerror, zzerror. Ну ладно. А кто такие Вротмненоги?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 22:46
Не обрабатывает события на элементах которые он сам создал Nexus jQuery 2 23.07.2009 17:31