Как добавить событие для всех элементов, кроме тех, которые имеют определенный класс? - PullRequest
1 голос
/ 24 июня 2009

Я хочу добавить указатель мыши на все элементы на странице, кроме тех, которые имеют класс "no_inspect",

Я хочу добавить это событие после загрузки всех элементов страницы, я пытался написать его так:

$('*:not(.no_inspect)').mouseover(MouseOverEvent);

но не работает, швы что-то пропустили.

ОБНОВЛЕНИЕ Не работает означает:

Событие присоединяется ко всем элементам на странице «есть класс no_inspect или не имеет», что не соответствует желаемому поведению.

ОБНОВЛЕНИЕ Код MouseOverEvent:

function DIOnMouseOver(evt) {
    element = evt.target;

    // set the border around the element
    element.style.borderWidth = '2px';
    element.style.borderStyle = 'solid';
    element.style.borderColor = '#f00';
}

Ответы [ 2 ]

2 голосов
/ 24 июня 2009

Событие mouseover всплывает. Попробуйте mouseenter вместо.

Кроме того, почему вы применяете стили к evt.target? Почему не «это»?

function DIOnMouseOver(evt) {
    $(this).css({
        border: '2px solid #f00'
    });
}

Как упомянул Matchu (в комментариях), еще один способ избежать распространения - вызвать event.stopPropagation() в вашем обработчике событий.

0 голосов
/ 24 июня 2009

Код, который вы опубликовали, должен работать, вы уверены, что событие mouseover не запускает элемент, который оборачивает тот, над которым вы наведите курсор мыши?

Используете ли вы последнюю и лучшую версию JQuery. Я знаю, что в старых версиях была ошибка класса в неселекторе.

Вы можете попробовать

$('*').not('.no_inspect').mouseover(MouseOverEvent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...