Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.11.2012, 08:22
Новичок на форуме
Отправить личное сообщение для hjacob Посмотреть профиль Найти все сообщения от hjacob
 
Регистрация: 05.11.2012
Сообщений: 6

jQuery - проблема с .on
Погуглив, нашел пример для .on
<script>$("div.test").on({
  click: function(){
    $(this).toggleClass("active");
  },
  mouseenter: function(){
    $(this).addClass("inside");
  },
  mouseleave: function(){
    $(this).removeClass("inside");
  }
});</script>

Скрипт работает, но вот проблема в следующем, подгружаю контент с помощью ajax и этот скрипт не работает для нового контента. Вообщем, не знаю что делать. Подскажете?
Ответить с цитированием
  #2 (permalink)  
Старый 05.11.2012, 10:38
Кандидат Javascript-наук
Отправить личное сообщение для Your Посмотреть профиль Найти все сообщения от Your
 
Регистрация: 03.10.2012
Сообщений: 147

Сделайте это в функции...
Чтобы функция запускалась.
При нажатии или что там...
Либо:
Подгружать скрипт в том месте где контент.
И библиотеки не забудь подключить.

Иначе не видит, что ему передают и что там такое вообще.

Последний раз редактировалось Your, 05.11.2012 в 10:42.
Ответить с цитированием
  #3 (permalink)  
Старый 05.11.2012, 11:12
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

У on есть особенности, напрямую оно и не будет работать, надо примерно так (div.test - он подгружается динамически):
$(document).on('click', 'div.test', functon(){alert('aaaa')});
Ответить с цитированием
  #4 (permalink)  
Старый 05.11.2012, 14:18
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Serg_pnz
У on есть особенности, напрямую оно и не будет работать, надо примерно так (div.test - он подгружается динамически):
это называется делегированием, событие вешается на документ а не на элемент и при клике по документу проверяется target, если target проходит по правилам div.test событие передается target'у.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 05.11.2012 в 14:22.
Ответить с цитированием
  #5 (permalink)  
Старый 05.11.2012, 20:27
Новичок на форуме
Отправить личное сообщение для hjacob Посмотреть профиль Найти все сообщения от hjacob
 
Регистрация: 05.11.2012
Сообщений: 6

Цитата:
$(document).on('click', 'div.test', functon(){alert('aaaa')});
Но как это сделать сразу для 3 действий, что у меня в первом посте?
Ответить с цитированием
  #6 (permalink)  
Старый 05.11.2012, 20:45
Новичок на форуме
Отправить личное сообщение для hjacob Посмотреть профиль Найти все сообщения от hjacob
 
Регистрация: 05.11.2012
Сообщений: 6

В моем случае это работает только для существующих элементов:
$('#tablelist tr').on({
        mouseenter: function(){
alert(1)
},
        mouseleave: function(){
            alert(2)
        }
    });


Как переписать скрипт, чтобы он работал и для новых элементов?
Ответить с цитированием
  #7 (permalink)  
Старый 05.11.2012, 20:55
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Я не парился и писал для каждого события отдельно.
http://api.jquery.com/on/ - вроде нет примера с группировкой

Это не оно .on( events-map [, selector] [, data] ) ?

Последний раз редактировалось Serg_pnz, 05.11.2012 в 21:00.
Ответить с цитированием
  #8 (permalink)  
Старый 05.11.2012, 21:00
Новичок на форуме
Отправить личное сообщение для hjacob Посмотреть профиль Найти все сообщения от hjacob
 
Регистрация: 05.11.2012
Сообщений: 6

Цитата:
http://api.jquery.com/on/ - вроде нет примера с группировкой
Внизу посмотрите, там то же самое, что и у меня в первом посте.
Ответить с цитированием
  #9 (permalink)  
Старый 05.11.2012, 21:13
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

А про карту событий для кого пишут?
Во, разобрался, и для себя тоже
$(document).ready(function(){ 
      
        $('body').append('<div id="dnew">new</div>')
      
        $(document).on({
        
          click:function(){alert('a1')},
          mouseout:function(){$(this).css('color', 'red')},
          mouseenter:function(){$(this).css('color', 'green')}
          
        }, '#dnew')
        
      });


Пример http://learn.javascript.ru/play/l1qUkb
Ответить с цитированием
  #10 (permalink)  
Старый 05.11.2012, 21:19
Новичок на форуме
Отправить личное сообщение для hjacob Посмотреть профиль Найти все сообщения от hjacob
 
Регистрация: 05.11.2012
Сообщений: 6

Работает, спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с .blur в jQuery Akademik Events/DOM/Window 4 08.07.2012 11:14
Проблема с кодировкой в Jquery snizhok jQuery 3 27.06.2011 20:53
Ошибка в jQuery 1.5.1. Не понимаю в чем проблема? viatcheslav AJAX и COMET 0 16.05.2011 11:38
Проблема с вкладками на jquery tomclancys Общие вопросы Javascript 0 11.03.2010 08:44
jquery tabs (проблема с отображением) Extern Элементы интерфейса 0 16.03.2009 17:42