stopPropagation 函数读取未定义
2013-04-29
2048
我有一个包含大量 e.stopPropagation 的页面,因此我决定创建一个函数。代码如下
function stopProp(name) {
if($(e.target).hasClass(name)) {
e.stopPropagation();
}
}
虽然每次在控制台中它似乎根本不起作用,并说 stopProp 未定义。
这是我试图转换为函数的实际 JS
$('#chatting').on('click','.chatheader',function(e){
if($(e.target).hasClass('setting')) {
e.stopPropagation();
}
}
});
有人能帮我弄清楚为什么它不起作用以及我应该如何处理吗?我认为只需更改为函数就相当容易,因此我可以轻松编写
stopProp('setting');
,尽管这里不是这种情况。
2个回答
click
事件的处理程序应返回一个参数,即事件。因此,您应该有一个返回事件的函数,例如:
$('#chatting').on('click','.chatheader',stopProp('setting'));
function stopProp(name) {
return function(e) {
if($(e.target).hasClass(name)) {
e.stopPropagation();
}
}
}
Samuel Caillerie
2013-04-29
您需要将
event
对象传递给
stopProp
方法。
function stopProp(e) {
if($(e.target).hasClass(e.data.className)) {
e.stopPropagation();
}
}
然后
$('#chatting').on('click', '.chatheader', {className: 'setting'}, stopProp);
演示: Fiddle
Arun P Johny
2013-04-29