jQuery - как обновить селекторы после добавления класса - PullRequest
1 голос
/ 20 октября 2011

Я сделал этот пример в jsfiddle, чтобы продемонстрировать мою проблему: http://jsfiddle.net/paulmason411/7E6vG/

Посмотрите, как добавлен серый класс, и, тем не менее, он не применяет левое поле при повторном наведении курсора. Я предполагаю, что это потому, что селектор $('.block.grey') объявлен до того, как добавлен класс.

В любом случае можно ли получить селектор $('.block.grey') для повторного анализа dom после добавления класса?

Любая помощь была бы отличной, ура!

EDIT: У меня есть более сложный пример

$('.accordion h3').not('.ui-state-active').find('a').live('hover', function(){

Где класс ui-state-active добавляется динамически. БитсМикс указал, что этот код делает a живым. Поэтому я обновил его до

$('.accordion h3').live('hover', function(){
  $(this).not('.ui-state-active').find('a').stop().animate({

и это работает! Спасибо, ребята!

Ответы [ 4 ]

2 голосов
/ 20 октября 2011

Вот так:

$('.block').hover(function(){
    $(this).css('background-color', '#CCC'); 
    $(this).addClass('grey');
});

$('.block.grey').live('hover',function(){
    $(this).css('margin-left', '10px');    
});

jQuery Live

2 голосов
/ 20 октября 2011
$('.grey').live('hover',function(){
    $(this).css('margin-left', '100px');    
});

http://jsfiddle.net/bitsmix/7E6vG/2/ живое демо:)

2 голосов
/ 20 октября 2011

вам нужно добавить лайв к этому:

$('.block.grey').live( "hover",function(){
    $(this).css('margin-left', '10px');    
});

скрипка

1 голос
/ 20 октября 2011

Вы можете использовать .live ()

$('.block.grey').live('hover', function() {
    $(this).css('margin-left', '10px');    
});

http://jsfiddle.net/7E6vG/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...