javascript - 窗口大小调整时如何取消绑定(bind)/关闭 jQuery 事件

标签 javascript jquery resize window

当窗口超过 490 时,我试图删除 jquery 事件。但是,当窗口小于 490px 时,unblind() 或 off() 元素不会停用激活的操作。为什么是这样?有谁知道有什么方法可以使选择恢复到原始状态吗?

$(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>

最佳答案

这里是你如何实现你想要的,下面的代码将根据屏幕尺寸解除隐藏事件的绑定(bind)。

$(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 以全页模式运行代码片段。

关于javascript - 窗口大小调整时如何取消绑定(bind)/关闭 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38412411/

相关文章:

javascript - 如何在同一页面上显示选项卡面板

javascript - 媒体源 api 源缓冲区追加不起作用

javascript - 不断运行 JavaScript?

html - 调整浏览器屏幕大小时如何使图像大小固定html

java - 除非调整窗口大小,否则组件不会显示 - Java

javascript - 如何将标签对齐到 div 控件的顶部中间并在其周围绘制一个矩形?

javascript - 更新后的状态值不会反射(reflect)在 React 的 setInterval() 内部

javascript - 使用 jquery 将元素附加到子元素

javascript - 通过 AJAX 发送数据到 MySQL

javascript - 全局 If else 语句