jQuery Resize函数循环奇怪

问题描述:

当窗口宽度调整为500px或更小时,我有jQuery代码为页面内容制作手风琴。jQuery Resize函数循环奇怪

当我使用jQuery(window).load(function() {手风琴的作品,它应该。但是,当我使用jQuery(window).resize(function() {jQuery(window).on("load resize",function(e){脚本是蛮横作用的,它循环(打开和关闭手风琴内容)。

我需要使用resize函数使窗口大小调整时手风琴工作。调整大小后,不需要重新加载页面以获得手风琴的工作。

这里是代码和JSFIDDLE的例子。在JSFIDDLE中,尝试调整“结果”窗口的大小并单击“内容标题”。

jQuery(window).on("load resize",function(e){ 

jQuery(function() { 
if(jQuery(window).width() <= 500) { 


    //ACCORDION BUTTON ACTION 
    jQuery('h3').click(function() { 
     if(jQuery(this).data("slided") === true) { 
      jQuery(this).next().slideUp('normal'); 
      jQuery(this).data("slided", false); 
     } else { 
      jQuery('h3').data('slided',false); 
      jQuery('.sec').slideUp('normal'); 
      jQuery(this).next().slideDown('normal'); 
      jQuery(this).data("slided", true); 
     } 
    }); 

    //HIDE THE DIVS ON PAGE LOAD  
    jQuery(".sec").hide(); 
} else { jQuery(".sec").show(); } 
}); 
}); 

单击上的奇怪行为是因为每次触发load或resize事件时都添加一个事件侦听器。

您必须在load/resize事件处理程序之外移动事件绑定。

//ACCORDION BUTTON ACTION 
jQuery(function() { 
    jQuery('h3').click(function() { 
     if(jQuery(this).data("slided") === true) { 
      jQuery(this).next().slideUp('normal'); 
      jQuery(this).data("slided", false); 
     } else { 
      jQuery('h3').data('slided',false); 
      jQuery('.sec').slideUp('normal'); 
      jQuery(this).next().slideDown('normal'); 
      jQuery(this).data("slided", true); 
     } 
    });  
}); 

jQuery(window).on("load resize",function(e){ 
    if(jQuery(window).width() <= 500) {   
    //HIDE THE DIVS ON PAGE LOAD  
    jQuery(".sec").hide(); 
} else { 
    jQuery(".sec").show(); 
} 
}); 

jsfiddle