Я не знаю, можете ли вы обнаружить «событие», такое как манипулирование именем класса в элементе.
Причина, по которой вы видите предупреждение при загрузке страницы, заключается в том, что оно находится в блоке if
, содержащемся в функции $(document).ready
jQuery, которая срабатывает один раз при загрузке страницы. По сути, вы не прикрепили это ни к какому событию, кроме события DOM ready. Поэтому он запускается, когда страница загружается и DOM готов, а оператор if
оценивается как true.
Вы также должны использовать свойство .length
в своем выражении:
if ($('.ui-tabs-panel:not(.ui-tabs-hide)').length) {
alert('hello');
}
// Or...
if ($('.ui-tabs-panel').not('.ui-tabs-hide').length) {
alert('hello');
}
Примечание
Я просто хотел бы предупредить, что приведенный выше код будет зависеть от того, что вы пытаетесь сделать с вашими действиями по обнаружению изменений класса - .length
даст вам общее количество подходящих элементов, так что если у вас больше one .ui-tabs-panel
, это может дать вам ложный положительный результат. Вам нужно будет рассмотреть что-то вроде вызова .each()
для результата jQuery, если вы хотите что-то сделать с результатами или что-то еще, если результат более одного.
Можно было бы запустить тайм-аут и попытаться проверить, есть ли у элементов класса ui-tabs-panel
также класс ui-tabs-hide
:
http://jsfiddle.net/userdude/4cF5v/
$(document).ready(function(){
$('.control').hover(
function() {
$('.ui-tabs-panel').removeClass('ui-tabs-hide');
},
function() {
$('.ui-tabs-panel').addClass('ui-tabs-hide');
}
);
runCheck();
});
function runCheck(){
if ($('.ui-tabs-panel').hasClass('ui-tabs-hide')) {
alert('hello');
}
setTimeout(function(){runCheck()},5000);
}
Я создал функцию runCheck()
, поместил в нее вызов .hasClass()
, а затем создал тайм-аут, который снова запустится runCheck()
, снова установите тайм-аут и продолжайте.
Я установил тайм-аут на 5000, чтобы ваш браузер не входил в бесконечный цикл (он проверяется каждые 5 секунд). На практике это, вероятно, должно быть настроено где-то между 50 и 500; 1000 равно 1000 миллисекундам или 1 секунде.
Вот он с тайм-аутом 50 миллисекунд и другим методом, который не блокирует ваш компьютер в цикле alert()
:
http://jsfiddle.net/userdude/k44qR/
Наведите указатель мыши на контрольную ссылку, затем наведите курсор мыши, а затем снова наведите курсор мыши, и вы увидите, как он запускается, останавливается и снова запускается.