Наведение элемента с JQuery

Есть ли способ навести элемент с помощью javascript? Я не хочу создавать еще один класс, я просто хочу, чтобы элемент зависал с помощью javascript, когда указатель мыши не находится над этим элементом.

Например, у меня есть 5 элементов с одним и тем же классом, и я хочу вызвать наведение на все из них, когда один из них действительно наведен.


person Maksim Vi.    schedule 30.12.2009    source источник
comment
Что именно вы подразумеваете под наведением курсора на элемент? Сделать так, чтобы это выглядело иначе?   -  person Chetan S    schedule 31.12.2009


Ответы (4)


Я предполагаю, что вы имеете в виду псевдокласс :hover, который вы связали со ссылкой (например). Когда вы наводите курсор на эту ссылку, вы хотите вызвать :hover стили всех остальных ссылок.

К сожалению, вы не можете вызывать стили :hover из jQuery, для этого требуется, чтобы вы фактически навели указатель мыши на этот элемент. Вы должны использовать классы и использовать событие jQuery hover.

person Tatu Ulmanen    schedule 31.12.2009

Вы можете добиться этого, одновременно обращаясь ко всем элементам в вашей коллекции в обработчиках событий наведения.

var items = $(".some-class-applied-to-many-different-items");
items.hover(function() {
        // Mouseover state
        items.addClass("blah"); // <- for example
    },
    function() {
        // Mouseout state
        items.removeClass("blah");
});
person Justin Johnson    schedule 31.12.2009

Если я правильно понял ваш вопрос, вы добавили событие hover с помощью jQuery и хотели бы запускать это событие вручную независимо от мыши.

Если я правильно понял, вы хотите вызвать mouseenter, чтобы вызвать событие mouseenter.

Если я неправильно понял, и у вас действительно есть правило CSS :hover, которое вы хотите активировать с помощью Javascript, это невозможно.
Вместо этого вы должны добавить к правилу имя класса (например, something:hover, something.FakeHover { ... }) и добавьте это имя класса, используя jQuery. (например, $(...).addClass('FakeHover')).

person SLaks    schedule 31.12.2009

В jQuery функция trigger позволяет запускать события (в том числе mouseover, по-моему) элементы.

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

function mouseoverHandler() {
    // Do something
}

// Assign function to element’s event handler
document.getElementById('link1').onmouseover = mouseoverHandler

// Call that function
document.getElementById('link1').onmouseover();
person Paul D. Waite    schedule 31.12.2009
comment
Вам даже не нужен trigger, вызов события без функции обратного вызова также работает, например, $('#foo').click(); вызовет событие клика #foo. - person Tatu Ulmanen; 31.12.2009
comment
Да, но я не думаю, что это работает для mouseover. Согласно документации, mouseover() просто позволяет привязать функцию к событию наведения мыши на элемент. Это не позволяет вам инициировать событие. - person Paul D. Waite; 31.12.2009
comment
Несмотря на то, что в документации это не упоминается, это работает для mouseover. Я проверяю источник. - person SLaks; 31.12.2009
comment
trigger.(mouseover) не работает для изменения класса CSS, но работает, чтобы инициировать функцию jquery для наведения мыши. stackoverflow.com/questions/17226676/ - person JohnP2; 26.10.2017