我試圖創建一個對象,它偶爾會根據用戶交互重建菜單。我這樣做的方式是克隆新菜單項並刪除舊菜單項。這意味着我引入了一個新類的div實例,這意味着我必須重新加載影響這個類的jQuery。調用jQuery相同obj中的方法不起作用
在下面的例子中,點擊菜單項會導致「TypeError:this.objMethod不是函數」。
如何讓jQueryClick方法調用objMethod?我認爲這是一個範圍問題,但我無法弄清楚如何讓jQuery函數超越自身。
function myObj(){
this.jQueryClick = function(){
$('.menu-item').click(function(){
this.objMethod();
})
}
this.objMethod = function(){
alert('hounds released');
}
this.jQueryClick(); // will be called whenever the menu is rebuild
}
newObj = new myObj;
如果我之外的電話objMethod使用jQuery這樣的:
$('.menu-item').click(function(){
newObj.objMethod();
})
它的工作原理,但將只對初始菜單工作,而不是當它重建。
看起來您需要了解如何將事件綁定到動態元素(請參閱:['jQuery.on'](http://api.jquery.com/on/)) – Jamiec
看起來您是對的!比將jQuery集成到對象本身更加優雅的解決方案,我一直認爲這看起來很雜亂。謝謝冠軍:o) –
嘿酷。沒有問題。對不起,我的評論(重讀它)有點生硬。 – Jamiec