wil*_*age 0 javascript jquery events javascript-events
在两个不同的事件处理程序之间共享一个函数的最佳方法是什么?我想要相同的结果,但是根据点击的元素,需要在函数中定义一些情境因变量.
我可以破解解决方案,但想知道这种情况的最佳实践.简单的问题必须有一个简单的答案......
例
var onMyEvent = function(e){
if(click triggered from 'a'){
//do that
}
if(click triggered from 'div'){
//do that
}
}
$('a').click(onMyEvent);
$('div').click(onMyEvent);
Run Code Online (Sandbox Code Playgroud)
FIDDLE: http ://jsfiddle.net/f6C92/
我想有几种方法可以实现这一点,例如检查e目标对象的变量等,但对于您的场景,最简单和最易读的将是使用该is()函数,您可以传递任何CSS选择器来测试是否感兴趣的对象与之匹配.
var onMyEvent = function(e){
if($(this).is('a')){
//do that
}
if($(this).is('div')){
//do that
}
}
$('a').click(onMyEvent);
$('div').click(onMyEvent);
Run Code Online (Sandbox Code Playgroud)
有些人会争辩说上面对jQuery进行了不必要的往返,当你通过测试可以实现同样的目的时this.tagName == 'A',但是出于浏览器兼容性的原因,我通常也建议将这些内容委托给jQuery.
另一种巧妙的方法是将相关信息作为事件数据传递:
var onMyEvent = function(e){
if(e.data.type == 'a'){
//do that
}
...
}
$('a').click({ type: 'a' }, onMyEvent);
$('div').click({ type: 'div' }, onMyEvent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3229 次 |
| 最近记录: |