Psy*_*hoX 4 jquery javascript-events
我用'onchange'处理程序创建了带有输入的表来进行数学运算.例如:
jQuery(<selector will find many elements>).keyup(function (){do something})
Run Code Online (Sandbox Code Playgroud)
现在我想要.append新表元素时出现问题.他们不响应keyup ...有没有办法自动绑定新元素(我使用.clone)与现有的.keyup(或任何其他事件)?
Pat*_*and 10
您应该使用事件委派.事件委托利用事件" 气泡 "通过DOM的事实,这意味着许多元素接收其后代元素之一的事件的通知.
使用jQuery,这更容易,因为它可以平滑事件处理和事件冒泡的一些跨浏览器不一致性.
现在,假设您要将事件处理程序绑定到表中的每一行.一种直接但低效的处理方法是将事件处理程序绑定到每一行.这实际上就是你现在正在做的事情.相反,想象一下,你将一个处理程序绑定到表,并说" 嘿,只要我的某个行发生某些事情就调用这个处理程序 ".这就是事件授权的全部内容.使用jQuery 1.7,事件处理接口已经过重构,并且更加一致.以下是如何绑定此类处理程序的示例:
$('table.math').on(
/*
* This first argument is a map (object) of events and their corresponding
* event handlers, like so: {eventName: eventHandler ([e]) {})
*/
{
keyup: function doMath (e) {
// Your event handling code here.
// "this" refers to the input where the keyUp-event occured
}
},
/* This argument is a selector, and reads:
* 'For table with class "math", bind to the events listed above
* whenever a corresponding event occurs on an input with class
* "mathInput"
*/
'input.mathInput'
);
Run Code Online (Sandbox Code Playgroud)
事件委派的另一个好处是它符合您的标准" 当我想要.append新表元素时会出现问题.它们不响应keyup ".使用事件委派,这将自动适用于与选择器匹配的所有后代,无论它们是在绑定处理程序时是否存在,还是稍后动态插入.
总结一下,事件授权:
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |