Я не уверен, что вы спрашиваете. Вы говорите, что хотели бы этот код:
var relvar = $('p.active').attr('rel');
$("div.test").html("<a rel='"+ relvar +"'>hello</a>");
Для запуска всякий раз, когда элемент <p>
меняет классы? Если это так, то нет события «onchangeclass» или чего-либо подобного, но вы можете создать собственное событие для обработки этого:
$('p').bind('toggleActive', function() {
if($(this).hasClass('active')) {
var relvar = $(this).attr('rel');
$("div.test").html("<a rel='"+ relvar +"'>hello</a>");
}
}).click(function() {
$(this).toggleClass('active').trigger('toggleActive');
});
Проверьте этот код в действии .
Это на самом деле своего рода обходной путь - было бы проще всего просто сделать логику в самом обработчике кликов. Основное преимущество переноса его на собственное событие заключается в том, что если вам необходимо сделать это в другом месте кода, вы можете отделить эту логику и просто «запускать» ее по мере необходимости.