2016-07-16 3 views
0

Я пытаюсь удалить событие jquery, когда окно получает> 490. Однако элементы unblind() или off() не деактивируют действие, активируемое, когда окно становится меньше 490 пикселей. Почему это? Кто-нибудь знает какой-либо метод, чтобы вернуть выбор в исходное состояние? Как отключить/отключить событие jQuery при изменении окна

$(document).ready(function(){ 

    $(window).resize(function(){ 
    if ($(window).width()<490) { 
    $("#shown").unbind().click(function(){ 
     event.preventDefault(); 
     $("body div hidden").toggle('slow'); 
    }); 
    } 

    else if ($(window).widht()>=490) { 
     $("#shown").unbind(); 
     $("body div hidden").unbind(); 
    } 
    }); 
}); 

</script> 
+1

Что именно вы хотите достичь? –

+1

Было бы намного проще проверить размер окна в самом событии клика, чем постоянно связывать/развязывать обработчики событий. Кроме того, вы можете добиться этого только с помощью CSS с использованием медиа-запроса и 'указателей-событий: none' –

+0

' hidden' selector выглядит подозрительно. Я предполагаю, что это класс или псевдоселектор ': hidden', а не тип элемента. Во всяком случае, ypu лучше следовать совету Rory –

ответ

0

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

$(document).ready(function() 
 
{ 
 
var eventPresent = false; 
 
$(window).resize(function() 
 
{ 
 
console.log("current width : ", $(window).width()); 
 
    
 
if ($(window).width()<490 && eventPresent == false) 
 
{ 
 
$("#shown").unbind().click(function(event) 
 
{ 
 
    event.preventDefault(); 
 
    $("#divText").toggle('hide'); 
 
}); 
 
eventPresent = true; 
 
}  
 
else if ($(window).width()>=490 && eventPresent == true) 
 
{    
 
    $("#shown").unbind(); 
 
    $("#divText").show() 
 
    eventPresent = false;  
 
} 
 
    }); 
 
}); 
 

 
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 

 
<a id="shown">click me to hide text</a> 
 
    
 
<div id="divText"> 
 
       
 
You can not toggle me if screen is more than 490 px wide 
 
      
 
</div> 
 

P.S Выполните фрагмент в режиме полной страницы.

+0

Это выглядит потрясающе. Хотя похоже, что он не работает для опции переключения. Вы видите, что скрыть это меню, я хочу, чтобы пользователь видел другие параметры при нажатии на «показанный». В тот момент, когда я нажимаю «показанный», исчезает, но не появляется снова. Я также спрошу вас, что такое var, console.log и eventPresent true/false, но, возможно, это был бы урок, на данный момент я комплимент себя за ваши навыки в кодировании! –

+0

Он отлично подходит для переключения, я обновил код для него. Дайте мне знать, если это вам поможет. – Deep

+0

Это работает, спасибо большое! : D –

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