2010-03-07 2 views
1

У меня есть .hover, когда при нажатии на него мне нужно отменить привязку, а затем, когда другой элемент щелкнет, необходимо снова привязать любое предложение о том, как заставить его работать со следующим кодом.jquery bind and unbind

$('ul li.port a, ul li.serv a,ul li.cont a, ul li.test a').hover(
    function() { 
    $('span', this) 
     .stop() 
     .animate({margin: '15px', left:'+=50',opacity: 1}, 200); 
     $(this).stop().animate({opacity: 1}, 200);   
    }, 
    function() { 
    $('span', this) 
     .stop() 
     .animate({margin: '0px',opacity: 0}, 200); 
     $(this).stop().animate({opacity: 0},200); 
    } 
); 

ответ

0

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

ИЛИ

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

$('ul li.port a, ul li.serv a,ul li.cont a, ul li.test a').unbind('mouseenter','mouseleave'); 
1

Вы можете синхронизироваться, как это:

$('ul li.port a, ul li.serv a,ul li.cont a, ul li.test a').hover(
    function() { 
    $('span', this) 
     .stop() 
     .animate({margin: '15px', left:'+=50',opacity: 1}, 200); 
     $(this).stop().animate({opacity: 1}, 200);   
    }, 
    function() { 
    $('span', this) 
     .stop() 
     .animate({margin: '0px',opacity: 0}, 200); 
     $(this).stop().animate({opacity: 0},200); 
    } 
).click(function() { 
    $(this).unbind("hover") 
}); 

Уведомление добавленное событие щелчка.

Чтобы снова навести курсор, просто вызовите код еще раз. Обычно я помещаю такие вещи, которые будут вызваны несколько раз в отдельной функции, BindHoverEvent в приведенном ниже примере.

$('#otherElement').click(function() { BindHoverEvent(); }); 
+0

я он работает, как этого $ ('уль Ли а'). нажмите (функция() { \t $ (это) .unbind ('MouseEnter') .unbind ('mouseleave'); \t \t \t \t \t \t }); , но когда я нажимаю на другой элемент, я не могу его снова привязать – Terry

0
//now whenever hover elm is clicked its event will be removed 
$('.hover').one('click',null,_handlerFn); 

//bind handler fn hover class when other elm ic clicked 
$('.anotherElm').bind('click',null,function(){$('.hover').one('click',null,_handlerFn);}); 
0

я использую по щелчку, но она должна быть примерно такой же. я связать по щелчку, а затем отвязать когда mouseleve

$("#langue_box").live("click",function(){ 
     $(this).addClass("show"); 
     req_content("langue_box","my_user","langue","show"); 
     $("#langue_box").bind("mouseleave",function(){ 
     $(this).removeClass("show"); 
     req_content("langue_box","my_user","langue","hide"); 
    $("#langue_box").unbind("mouseleave"); 
    }); 
    }); 
Смежные вопросы