我試圖將JavaScript函數用作jQuery的事件處理程序,但它需要一個額外的信息。我嘗試將它添加到數據的對象中,並使用this
,但this
在執行時爲空。我相信這與JavaScript中的函數複製有關。我怎樣才能傳遞我的額外信息。將其他參數傳遞給javascript事件
<script type="text/javascript">
var WIDTH_ATTR = 'initWidth';
function resizeHandler(event, ui){
var change = ui.size.width - this.master.attr(WIDTH_ATTR);
this.slave.width(slave.attr(WIDTH_ATTR) - change);
};
function splitResize(master, slave, masterHandles){
var s = new SharedResize(master, slave);
master.resizable({ handles: masterHandles, resize: s.resizeHandler });
}
function SharedResize(master, slave){
this.master = master;
this.slave = slave;
this.resizeHandler = resizeHandler;
master.attr(WIDTH_ATTR, master.width());
slave.attr(WIDTH_ATTR, slave.width());
}
// initialise plugins
$(function(){
try {
$('ul.sf-menu').superfish();
splitResize($('#Content'), $('#InfoPanel'));
}catch(ex){
alert(ex.message);
}
});
</script>
此代碼當調整大小嚐試給出
Line:13 'this.master' is null or not an object.
錯誤。
我可以讓這個方案工作,或者有另一種方法將事件處理程序與我的數據相關聯。
感謝的作品!我不得不調整你的關閉,但它足夠接近我。我更新了你的答案以反映我的變化。 –
噢好吧 - 我不確定你的意思是什麼「額外參數」的事情:-) – Pointy
我最初的目標是直接將'master'和'slave'傳遞給resize處理程序。我看到我現在可以做到這一點,使用閉包,但對象版本已經寫好。 –