-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Widget在dom事件处理上的增强 #14
Comments
@lianqin7 这个曾纠结过,但没找到合适的方式来封装 大家有什么好的建议?我的想法: widgetInstance.bindEvents({
'selector1 click' : handler1,
'selector2 focus' : handler2,
})
widgetInstance.unbindEvents(...) 然后 destroy 里也会做相应处理。 相当于一个代理,具体实现还是 jquery。纠结点是,这层代理是否有必要? |
这样只是写法上好看点,感觉是一样的
|
是不是可以借鉴 backbone http://backbonejs.org/#Events-listenTo
这里的 element 是指页面上的任意 DOM,实际上就是帮他绑定,好处是可以统一管理这些事件。
|
这个好,可以考虑 On Wed, Mar 27, 2013 at 11:27 AM, Haoliang Gao [email protected]:
王保平 / 玉伯(射雕) |
@popomore 是指让 |
@lianqin7 恩,是这个意思 |
目前:
增加: this.delegateEvents('click selector', function() {}, this.trigger} |
delegateEvents('click selector', {
on: '#trigger',
do: function() {}
}) |
delegateEvents(element, 'click selector', function() {})
delegateEvents('click selector', element, function() {})
delegateEvents('click selector', function() {}, element) |
个人觉得 |
支持的调用方式
|
``` this.delegateEvents() this.delegateEvents({ 'click p': 'fn1', 'click li': function() {} }) this.delegateEvents('click p', fn1) this.delegateEvents('click p', function() {}) this.delegateEvents('#trigger', 'click p', fn1) this.delegateEvents($('#trigger'), 'click', function() {}) ```
``` .undelegateEvents() .undelegateEvents(events) .undelegateEvents(element, events) ```
@lifesinger
目前在widget内部处理element相关的dom事件都可以通过delegateEvents接口来解决,
但如果是 element之外的dom事件(比如popup中的trigger等) 却没办法通过delegateEvents接口来注册,
用jquery原生的dom事件注册又要考虑 context及unbind 的问题( 这2个问题在delegateEvents中已经解决 ),每次因为这个原因 多写一堆几乎相同的代码 真心蛋疼
建议: 能否提供一对类似于delegateEvents/undelegateEvents的接口来处理非element内部的dom事件 ,对 保持处理逻辑的一致性及widget的易用性 来说都有很大的帮助:)
The text was updated successfully, but these errors were encountered: