2010-05-13 268 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的代碼和我自己的代碼。

​​