javascript - if..else 在 IIFy 内部工作,但不在事件监听器内部工作

标签 javascript jquery if-statement

此代码完全按照预期工作:

(function(){
  var $winWidth = $(window).width();
 $( "#stop" ).prepend( "<p>Actual window width: " + $winWidth + "</p>" ); 
 if ($winWidth < 700) {
   $('.cycle-slideshow').attr('data-cycle-carousel-visible', '3');
 } else if ($winWidth < 1000) {
   $('.cycle-slideshow').attr('data-cycle-carousel-visible', '6');
 } else {
   $('.cycle-slideshow').attr('data-cycle-carousel-visible', '9');
 }
}());

但是这个很高兴地按照预期动态显示宽度,但拒绝支持相同的 if ... else

$(window).on('resize',function() {
      var $winWidth = $(window).width();
      $('#stop p').remove();
      $( "#stop" ).prepend( "<p>Actual window width: " + $winWidth + "</p>" );
   if ($winWidth < 700) {
   $('.cycle-slideshow').attr('data-cycle-carousel-visible', '3');
 } else if ($winWidth < 1000) {
   $('.cycle-slideshow').attr('data-cycle-carousel-visible', '6');
 } else {
   $('.cycle-slideshow').attr('data-cycle-carousel-visible', '9');
 }
    });

请问我可以得到一些解释吗? 笔在这里:http://codepen.io/462960/pen/yyKrWP?editors=1010 我什至尝试过这种模式但没有成功:

$(window).on('resize',function() {
      var $winWidth = $(window).width();
      var atTribute;
      $('#stop p').remove();
      $( "#stop" ).prepend( "<p>Actual window width: " + $winWidth + "</p>" );
   if ($winWidth < 700) {
  atTribute = '3';
 } else if ($winWidth < 1000) {
  atTribute = '6';
 } else {
  atTribute = '9'; 
 }
  $('.cycle-slideshow').attr('data-cycle-carousel-visible', atTribute);
    });

您能否让我放心,我在上一次中没有滥用 var 重新分配。

最佳答案

代码中的 if...else 工作正常。如果您检查轮播并观察 data-cycle-carousel-visible 属性,它会按照调整大小时的预期进行更改。

我认为 IIFE 按预期工作的原因是因为它是在页面完成加载之前执行的,这很可能是在 Cycle2 carousel 插件运行时发生的。此时,您的属性已设置为正确的幻灯片数量。

当您在调整大小时更改属性时,它只是更改 DOM 中的属性。您使用的轮播插件不会监视该属性的更改,因此幻灯片的可见数量不会更改。

我做了一些挖掘,发现其他人也在寻找此插件的类似功能,因此此链接可能会帮助您继续前进:https://github.com/malsup/cycle2/issues/68

关于javascript - if..else 在 IIFy 内部工作,但不在事件监听器内部工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35873579/

相关文章:

javascript - for循环内的jquery.load()不起作用

javascript - 某些进程正在删除 JSP 文件中第一次出现的反斜杠。那会是什么?

javascript - 检测光标是否在内容可编辑的 li 内

javascript - onclick href 未在单击函数内触发

python - 在 if 语句后使用变量

c - Scanf() 无法识别 %c 之前的空格

string - excel对另一个单元格包含字符串的所有单元格求和

javascript - 在google api javascript中更改前格式的日期和时间

javascript - XUL:滚动到顶部并重新加载页面

jquery - TableTools 仅导出单个标题行