2012-04-05 1 views
-1

Я стараюсь играть с jQuerymouseenter и mouseleave событиями, но не удается.JQuery .on и .off не работает с событиями mouseenter и mouseleave

Вот что я пытаюсь сделать

$("#selector").mouseenter(function(){ 
     some code.... 
     jQuery(this).off('mouseenter'); 
    } 
); 
$("#selector").mouseleave(function(){ 
    some code.... 
    jQuery(this).on('mouseenter'); 
}); 

В этом .off() работает, но, к сожалению, .on не работает.

Может ли кто-нибудь помочь мне здесь?

Thx заранее.

>

Edit: Извините за меньше информации в моей выше вопрос.

Мне нужно открыть всплывающую подсказку на mouseenter и иметь несколько кнопок в этой всплывающей подсказке. Эта всплывающая подсказка добавляется в том же div. Поэтому, когда я пытаюсь щелкнуть по кнопке в подсказке, она вызывает событие mouseenter, поэтому в div добавляется всплывающая подсказка. Так что я звоню .off() Событие, как только tooptip вызывается до тех пор, пока мышь не покинет селектор.

Дайте мне знать, если вам нужна дополнительная информация.

Thx еще раз.

+0

Вы не передаете функцию '.on' ... Кроме того, то, что вы пытаетесь сделать, не требуется. – Esailija

ответ

1

Необходимо перенести событие в обработчик. $(this).on('mouseenter'); не свяжет с ним обработчик.

Попробуйте использовать функцию для привязки в качестве обработчика, поэтому он может быть ограничен снова и вместо on и off использования .one

$("#selector").one('mouseenter', selMouseEnter); 

$("#selector").mouseleave(function(){ 
    some code.... 
    $("#selector").one('mouseenter', selMouseEnter); 
}); 

function selMouseEnter() { 
    some code.... 
} 

Edit: то, что вы пытаетесь сделать, может быть достигнуто с помощью .hover или просто осуществление .mouseenter и .mouseleave функций. Нет необходимости в bind/unbind, поскольку эти функции вызываются один раз на mouseenter и mouseleave.

+0

Прохладный, он работал. – Shashi

+0

@Shashi Добро пожаловать в stackoverflow и прочитайте http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work, чтобы узнать, как работает SO (stackoverflow). –

0

Методы on и off не используются для включения и выключения событий, они используются для привязки и отвязывания событий.

Итак, это:

$("#selector").mouseenter(function(){ 
    some code.... 
}); 

делает то же самое, как:

$("#selector").on("mouseenter", function(){ 
    some code.... 
}); 

и:

$("#selector").bind("mouseenter", function(){ 
    some code.... 
}); 

Вам не нужно отвязать событие в то время как мышь находится над элемент, просто обработайте события mouseenter и mouseleave:

$("#selector").mouseenter(function(){ 
    some code.... 
}).mouseleave(function(){ 
    some code.... 
}); 
0

То, что вы пытаетесь сделать, просто может быть достигнут:

$("#selector").mouseenter(function(){ 
    some code.... 
}).mouseleave(function(){ 
    some code.... 
}); 

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

Кроме того, вы используете .on неправильно, вам необходимо передать функцию. См. .on docs.