2010-07-23 3 views
1

Мне нужно выполнить код JQuery при изменении атрибута класса элемента. Например, изначально элемент будет: <div class="my-class">. Таким образом, когда новый класс добавляется к этому DIV (т.е. <div class="my-class new-class">, я должен вызвать код JQuery.Событие Jquery для изменения атрибута класса элемента

Как сделать это в JQuery? Есть ли событие для атрибута изменить?

ответ

2

Если у вас нет абсолютно никаких средств говорить когда внешняя функция изменяет класс (например, пользовательское событие, например), вы должны сделать что-то вроде этого:

$(document).ready(function(){ 

    // Cache the required element 
    window.elementInQuestion = $('#element-that-changes-class'); 

    function checkClass(){ 
     if (window.elementInQuestion.hasClass('new-class')) { 
      // Trigger a custom event 
      $(document).trigger('elementHasClass'); 

      // If you need the check only until the first time the class appears 
      // you can cancel further checks here 
      clearInterval(window.classCheckerInterval); 
     } 
    } 

    // Check if an element has class every once in a while 
    window.classCheckerInterval = setInterval(checkClass, 100); 

    $(document).bind('elementHasClass', function(){ 
     // Your handler here 
    }); 
}); 
+1

решение работало. но строка if (window.elementInQuestion.hasClass ('new-class')) работает только тогда, когда я меняю ее на if ($ ('# element-that-changes-class'). hasClass ('new-class')) – Veera

0

Cant»вы просто связать функциональные возможностям функции, которая изменяет класс?

+1

я не могу. Поскольку атрибут CSS изменяется внешней функцией JS, на которой у меня нет никакого элемента управления. – Veera

+0

Как внешний? Можете ли вы предоставить дополнительную информацию? –

+0

Я пытаюсь улучшить результаты поиска, возвращаемые Google CSE. Итак, в этом случае JS Google изменяет атрибуты элемента. Когда они изменяют атрибут, мне нужно позвонить в JS. – Veera

0

Там нет кросса узла браузера изменился событие.

Одним из вариантов могут быть использование LiveQuery плагина. Он будет сканировать дом периодически ищет изменения и будет поднять событие, если оно встречается с изменением.

Смежные вопросы