'resize'事件处理程序不会发生

时间:2011-12-14 15:56:04

标签: jquery html

我现在正在改进一个网站 - http://vse-v-nas.com.ua(链接只是为了重现步骤,如果有人想要更深入一些)。

右栏内容:

// html
<td id="sidebar-right">...</td>
// css
#sidebar-right {
  width: 209px;
  padding: 10px;
}

即。 $('#sidebar-right')。width()应为229px 并且它在Chrome中,但它在FF 8.0.1和IE 9.0.3中的值为“245px”

我不知道为什么FF和IE中的内容的右列宽度是其他的,而不是Chrome, 但是我希望那个图像(在右上角 - $('img.header-image'))与下面的右栏相同(就像在Chrome中一样)。

我在标记结束前将脚本添加到正文中,以便为图像和右侧边栏设置相等的宽度。

<script type="text/javascript" language="javascript">
  $(document).ready(function () {
    var $headerImage = $('img.header-image');
    var $rightSidebar = $('#sidebar-right');

    // in this line $rightSidebar.width() is 229px in every browser...

    $rightSidebar.resize(function() {
      // event handler doesn't occur after width changing in IE and FF...
      alert($headerImage.width());
      alert($(this).width());
    });
  });
</script>

事件处理程序不会发生,但页面加载后大小会发生变化。 任何人都有想法帮助我解决这个问题!

2 个答案:

答案 0 :(得分:2)

调整大小处理程序不适用于页面的div /元素。查看http://benalman.com/projects/jquery-resize-plugin/。它是为处理这些类型的情况而创建的插件。

答案 1 :(得分:1)

听起来上面的答案已经回答了你的直接问题。至于为什么它在Safari和Firefox中为245,它可能是由不同浏览器推测的默认CSS,特别是边界间距,因为你使用了很多表。内部内容越大将迫使侧边栏div宽于229px。