2010-05-13 273 views
0

我有一段javascript代码,当浏览器窗口调整大小时,应该处理jQuery窗口调整大小

resize.style.marginRight=(resize.offsetWidth-$(this)[0].offsetWidth)+'px' 

Tryed这个东西(不工作):

window.onresize = function(event) { 
resize.style.marginRight=(resize.offsetWidth-$(this)[0].offsetWidth)+'px' 
} 

的完整代码可用 - http://jsbin.com/adelu3/2/(请参阅网页的源文件)

HTML(由脚本生成):

<div class="resizable-textarea"> 
    <span> 
     <textarea class="resizable processed" cols="" rows=""></textarea> 
     <div class="resize"></div> 
    </span> 
</div> 

谢谢。

+0

你想做什么? – vsync 2010-05-13 08:54:37

+0

@vsync - 它在加载时给出右边距,但在浏览器窗口大小调整时不会改变。 – Happy 2010-05-13 09:59:06

回答

1
$(this)[0].offsetWidth 

offsetWidth是元素的属性。在回调代码window.onresize中,thisWindow,它没有偏移量。

什么是this应该是? (onresize事件不存在于链接的代码中。)如果要读取窗口宽度,请使用$(window).width()

如果要读取封闭范围内的其他(祖先?)元素的宽度,则必须从resize元素中查找该元素,或者保留对其他元素的引用元素封闭,例如:

var that= this; 
$(window).resize(function() { 
    resize.style.marginRight= resize.offsetWidth-that.offsetWidth+'px' 
}); 

(注意:$(this)[0]正是什么都不做。)

+0

对不起,我没有足够的javascript知识。你能给一个完整的代码吗? – Happy 2010-05-13 10:19:06

+0

这是行不通的 - $(window).width(function(){ resize.style.marginRight =(resize.offsetWidth - $(this)[0] .offsetWidth)+'px') }); – Happy 2010-05-13 10:19:28

+0

这也是 - $(window).width(resize.style.marginRight =(resize.offsetWidth - $(this)[0] .offsetWidth)+'px'); – Happy 2010-05-13 10:19:55

0

自己做。

这是一个混合的解决方案,它共享@ bobince的代码和我自己的代码。

​​