Отмена события щелчком мыши

359
16 января 2017, 22:16

При наведении указателя мыши объект появляется, при отведении указателя мыши объект удаляется. Применил функцию off чтобы, при нажатии объект не удалялся при отведении мыши, почему-то не работает.

    $('h2').next().hide(); 
     
$('h2').mouseover(function(){ 
     var $anse=$(this).next(); 
    $anse.show(); 
}); 
    $('h2').mouseout(function(){ 
     var $anse=$(this).next(); 
    $anse.hide(); 
}); 
    $('h2').click(function(){ 
     var $anse=$(this).next(); 
    $anse.off('mouseout'); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Answer 1

Создайте переменную и при нажатии на заголовок переменная менялась и так при при отжатии

var md = false; 
 
$('h2').next().hide(); 
     
$('h2').mouseover(function(){ 
  var $anse = $(this).next(); 
  $anse.show(); 
}); 
$('h2').mouseout(function(){ 
  var $anse = $(this).next(); 
  if(md == false){ 
    $anse.hide(); 
  }; 
}); 
$('h2').mousedown(function(){ 
  md = true; 
}); 
$(document).mouseup(function(){ 
  md = false; 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h2>Заголовок</h2><div>Текст</div>

Answer 2

Вы отписали обработчик от $anse - но назначен-то он был для H2!

Вот так должно заработать:

$('h2').on('click', function() {
  $(this).off('mouseout');
});
Answer 3

 $('h2').click(function(){ 
     var $anse=$(this).next(); 
    $(this).off('mouseout'); 
}); 
    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

READ ALSO
Тестирование nodejs (express) приложения

Тестирование nodejs (express) приложения

Хочу спросить ваше мнение, у меня есть 2 сущности: Роуты

294
Альтернатива .delay()

Альтернатива .delay()

Насколько я понимаю,delay() не работает с

389
Замыкание в JavaScript [дубликат]

Замыкание в JavaScript [дубликат]

На данный вопрос уже ответили:

355
Как можно упростить этот код JavaScript?

Как можно упростить этот код JavaScript?

Код неплохой, но единственное, что я сделал бы:

320