JQuery сделать что-то, когда класс добавил класс - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть li с классом 'tab3'. В другом месте есть jQuery, который при наведении на него добавляет класс selected. Я хочу сделать что-нибудь, когда это произойдет:

<li class='tab3 selected'>
  <div class='showme'>Show this</div>
  <div class='addattr'>Add attributes</div>
</li>

$('.tab3.selected').each(function() {
    $('.showme').show();
    $('.addattr').attr('style', 'position:relative; display:block');
});

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Нет встроенного способа сделать это, но вы всегда можете зарегистрировать обработчик события для «настраиваемого» события, такого как «изменение класса», и затем запускать его всякий раз, когда обновляете класс элемента. (Вы можете даже переопределить функцию "addClass", чтобы сделать это.)

$('whatever').addClass('selected').trigger('class-change');

// ...

$('.tab3').bind('class-change', function() {
  $('.tab3.selected').each(function() {
    $('.showme').show();
    $('.addattr').attr('style', 'position:relative; display:block');
  });
});

Конечно, вы также должны рассмотреть возможность использования простых старых правил CSS для изменения внешнего вида при добавлении / удалении классов, как отмечено в ответе @Brad Wedell.

2 голосов
/ 15 ноября 2011

Вы можете сделать это через css:

<style type="text/css">
    .tab3 .showme{display:none;}
    .tab3.selected .showme{display:block;}
</style>
...