2013-07-16 4 views
0

Я хотел бы вызвать центр мыши в пункте меню '#currentitem a', когда загружается моя страница. То, что я сделал с:mouseenter запускается при загрузке страницы, и если не запускается другое событие mouseenter

$(document).ready(function(){ 
    $("#currentitem a").trigger('mouseenter'); 
}); 

Моя проблема заключается в том, что если я MouseEnter (вручную) другой элемент, сработавшего (с кодом выше) деталь не MouseLeave. Элементы меню перекрываются.

Я новичок, я хотел бы добиться следующего, если это возможно?

  1. mouseenter '#currentitem a' on pageload.
  2. mouseleave '#currentitem a', когда у другого элемента есть спусковой крючок мыши.
  3. Когда этот пункт меню вызывает mouseleave, mouseenter '#currentitem a', поэтому элемент всегда срабатывает, когда ничего не происходит.

Это меню является частью более сложной установки jQuery, а не просто простой CSS, поэтому это лучший способ, с помощью которого я могу это сделать. Любая помощь приветствуется.

Теперь я создал JSFiddle, чтобы показать, что я пытаюсь сделать:

http://jsfiddle.net/qFS84/

+0

Это происходит, когда ваша логика ошибочна. Вы ожидаете, что что-то произойдет, когда мышь покинет элемент, но это возможно, что мышь никогда не покинет этот элемент, и вы, вероятно, должны делать что-то вроде закрытия всех других меню и т. Д.когда мышь входит в новый пункт меню или, по крайней мере, проверяет, закрылись ли все, как предполагалось, при вводе другого элемента меню, а не только при его удалении. – adeneo

ответ

0

Вот что-то попробовать, что должно работать

$(function(){ 
    $('#currentitem a').trigger('mouseenter'); 
    $('.currentitem a').on('mouseenter', function(e) { 
     if ($('.currentitem a:focus').length > 0) { 
      $('.currentitem a:focus').blur(); 
     } 
    }); 
}); 

Если это не работает, пожалуйста, сообщите я знаю, и я подберу это.

EDIT:

После просмотра ваших изменений, я мог бы найти вашу проблему

Когда вы ориентируетесь элементы с JQuery, атрибут ID должен быть использован только один раз в DOM. Предполагая, что это верно с вашим html, следующее, что я думаю, это то, что вы не слушаете, когда мышь входит в другой элемент (например, следующий li в вашем списке). Если это правда, вам просто нужно прослушать событие mouseenter на других элементах li.

Наконец, если вы слушаете события, но они не работают, есть еще одно событие, которое они могут сработать для вас. Событие mouseover

Середины редактировать обновление:

Если вы говорите о меню не скрывая при наведении указателя мыши прямо над «Наши проекты», не попав что-нибудь еще, это потому, что мышь никогда не «вошел» элемент, поэтому он не будет скрывать себя, путь вокруг этого проста:

$("#mydroplinemenu > ul > li[id!='currentitem'] > a").one('mouseenter', function(e) { 
    $('#currentitem a').trigger('mouseleave'); 
}); 

этот селектор для моих целей событий только ссылка элементы, которые не #currentitem и только запускают один раз для каждой ссылки. Это может меня просто то, что вы ищете! Я тестировал его на вашем jsfiddle, и это действительно сработало.

+0

Большое спасибо за помощь. Но, к сожалению, он по-прежнему действует так же, как и он. Я новичок в jquery, поэтому не могу разобрать его. Любое изменение было бы очень оценено. – xsample

+0

Извините, что запутал вещи, элемент один id = currentitem (Сообщение отредактировано) – xsample

+0

Теперь я создал JSFiddle, чтобы показать, что я пытаюсь сделать: http://jsfiddle.net/qFS84/ – xsample

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

  • Нет связанных вопросов^_^