Вопрос по this
Имеется некоторый объект page:
var page = { this.header = $( "#header" ); this.title = $( "#title" ); ... func : function () { console.log(this); ... } } При вызове метода func просто как page.func () this ссылается как и надо на объект page. Но при вызове через $(window).resize ( page.func ) this ссылается на window. Собственно вопрос - как при вызове через .resize() сделать так, чтобы this ссылался на page, а не на window? |
для новых браузеров:
$(window).resize(page.func.bind(page)); для новых и старых браузеров: $(window).resize(function(){ return page.func.apply(page, arguments); }); |
Спасибо, помогло. Только теперь новый вопрос, и предложенный метод не работает.
Некоторые объекты создаются конструктором: var point = function ( parameters ) { ... this.dom.del = $( "<div>", { "class" : "delete" }).appendTo( page.left ) this.dom.del.click ( function () { console.log ( $(this) ) } ) this.del = function () { ... } При клике на объект this.dom.del должна вызываться функция-член из этого же конструктора this.del(), но проблема в том, что при клике, в контексте .click() this будет ссылаться на объект вызвавший его - на DOM объект, у которого, естественно, нет метода .del(). Собственно вопрос - как передать в контекст .click() "правильный" this, чтобы можно было вызвать this.del(): this.dom.del.click ( this.del )? |
var point = function() { var me = this; this.del = function() { } this.click = function() { me.del(); } } |
Спасибо, всё работает.
|
Часовой пояс GMT +3, время: 16:36. |