我有如下看法骨幹適用jQuery代碼:當在一個骨幹視圖
core.views.Login = Backbone.View.extend(
{
el: '#main-content-wrapper',
events:
{
'focus #username': 'usernameFocus',
'blur #username': 'usernameBlur'
},
initialize: function()
{
this.render();
},
render: function()
{
var html = unlocked.renderTemplate('login', 'core');
this.$el.empty().html(html);
$('#username').focus();
return this;
},
usernameFocus: function(event)
{
console.log('focus');
if($(event.target).val() == 'Username')
{
$(event.target).val('');
}
},
usernameBlur: function(event)
{
if($(event.target).val() == '')
{
$(event.target).val('Username');
}
}
});
我的問題是,當我這樣做:$(「#用戶名」)專注(); :在渲染中是:usernameFocus:事件尚未附加。我只能想到兩種解決方案。
- 使用的setTimeout - 在該選項在技術上的工作,我不認爲這是一個真正的選擇
- 手動應用中呈現的事件 - 這樣做將完全繞過事件系統,骨幹網提供了似乎只是奇怪的。
Backbone爲我提供了一種在所有事件應用後運行jQuery代碼的方法嗎?
這也適用,並且更好地回答我的原始問題,謝謝。 – ryanzec 2012-04-19 21:16:51