.change()函数破坏.resize()脚本?

时间:2017-10-08 23:14:33

标签: javascript jquery

我有一个包含大量内容块的页面 - $('.asset) - 指向可下载内容的链接。有一个<select>元素触发脚本只显示类名与value的当前<select>对应的块。

$('select#academy').change(function() {
  var value =  this.value,
    $asset = $('.asset');

  $asset.hide().removeClass('is-showing');
  $('.asset.' + value).show().addClass('is-showing');
  if (value == 'all') {
    $asset.show().addClass('is-showing');
  }
});

工作得很漂亮。这些块包含使用以下脚本随时调整大小的方块:

$(window).resize(function() {
  var $assetTitle = $('.asset-title'),
    assetWidth  = $assetTitle.width();

  $assetTitle.css('height', assetWidth + 32);
}).resize();

在我测试过的所有浏览器中都能正常运行,并且在移动设备的页面加载上呈现得很好。

问题

我发现在我的iOS设备上,当我更改value的{​​{1}}时,一旦我开始滚动,select脚本似乎就会消失,我的所有.resize()元素都会丢失$('.asset-title')

这是一个实时项目的错误,因此您可以在此处查看(并查看标记/检查样式):adaptiva.com/academy

解决

我的脚本正在计算第一个height元素的宽度,该元素可能隐藏在.asset上。我将我的脚本更改为仅定位可见的.change()元素(使用类.asset),并相应地相应地计算它们的高度。

0 个答案:

没有答案