如果我有你的權利,那麼我會做這樣的事情:
var Callout = Backbone.View.extend({
events: {
"click": "clearTimeout" // clear timeout if clicked inside
},
render: function() {
// render and then
this.setTimeout();
return this;
},
setTimeout: function() {
var self = this;
if (!this.timeout) {
this.timeout = setTimeout(function() {self.hide();}, 120 * 1000);
}
return this;
},
clearTimeout: function(){
if (this.timeout) {
clearTimeout(this.timeout);
}
return this;
},
hide: function() {
this.$el.hide();
return this;
}
)}
如果您需要設置超時當時事件哈希是這樣的(而不是模糊的事件,focusout事件冒泡jQuery中)
events: {
"focusout": "setTimeout",
"focusin": "clearTimeout"
}
UPD:確保focusout
把焦點移動出Callout
來看,你需要檢查事件的relatedTarget不被內部視圖的$el
。
如果你有'div#callout'視圖的引用,你可以嘗試觸發一個消息,該視圖將會監聽 –
正確,但是如果我有100個其他視圖或子視圖,那麼會觸發他們每個人都在'點擊'事件 –
嗯,我想知道tabindex是答案here..lol http://www.barryvan.com。au/2009/01/onfocus-and-onblur-for-divs-in-fx/ –