我有一段javascript代码,应在浏览器窗口调整大小时处理。
resize.style.marginRight=(resize.offsetWidth-$(this)[0].offsetWidth)+'px'
尝试这些东西(不起作用):
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 :(得分:1)
$(this)[0].offsetWidth
offsetWidth
是元素的属性。在window.onresize
的回调代码中,this
是Window
,没有offsetWidth。
this
应该是什么? (链接代码中不存在onresize
事件。)如果要阅读窗口宽度,请使用$(window).width()
。
如果要读取封闭范围中作为this
的其他(祖先?)元素的宽度,则必须通过查找resize
元素找到该元素,或保留对闭包中其他元素的引用,例如:
var that= this;
$(window).resize(function() {
resize.style.marginRight= resize.offsetWidth-that.offsetWidth+'px'
});
(nb。$(this)[0]
完全没有。)
答案 1 :(得分:0)
自己做。
这是一个混合的解决方案,它分享@ bobince的代码和我自己的代码。
var tarea= this;
function resize_width(){ resize.style.width= tarea.offsetWidth+'px'}
resize_width();
$(window).resize(function() {resize_width()});