暴露DOM元素与JS
原型我有这个当前的实现(我知道是不正确的):暴露DOM元素与JS
kf.Ui.modal = function(){
this.el = $('#modal');
this.els = {
done: this.el.find('[name="modal-btn-done"]')
}
};
kf.Ui.modal.prototype.done = function(){
return this.els.done;
};
var modal = new kf.Ui.modal();
modal.done().on('click', function(){ alert('done clicked') });
如果你看到什么,我想在这里实现的,这可怎么办呢?所以,我想公开一个包含在this.el
中的DOM元素,并允许我自己将事件附加到实例化中。
基本上一切都不错,但我写不出这么大的意见
我会做,这将是这样:你不是有一个错字
function Modal(element) {
this.el = $(element);
this.done = this.el.find("button");
}
var modal = new Modal('div#mymodal');
modal.done.on('click', ...);
会出现问题如果这个按钮是在Modal创建完成后添加的,而且基于'div#mymodal'而不仅仅是'#mymodal'选择效率较低 – 2013-05-10 13:47:28
是的,在这种情况下它可能是'var that = this; this.done = function(cb){that.el.on('click','button',cb);}'and later'modal.done(function(){console.log(“I'm done”);}) ;' – drinchev 2013-05-10 13:52:25
?它不应该是'modal.done()。on ...'吗? – drinchev 2013-05-10 13:37:58
@drinchev你说得对。不觉得它需要成为一个功能。 – benhowdle89 2013-05-10 13:39:39
现在你修正了'.done()'调用,一切看起来都正确。你的'this.el.find()'会返回一个带有匹配的DOM元素的jQuery对象,然后你的'.done()'将返回这个jQuery对象,你的'.on()'会绑定处理器。 – 2013-05-10 13:41:39