定义事件委托
问题描述:
通常正确的语法,你写一个按钮的处理程序点击这样的:定义事件委托
$(document).ready(function()
{
$("button").click(function()
{
doSomething();
});
});
但在event delegator的情况下,对具有功能的事件,如对此作出回应:
function doSomething(event)
{
if (ev.target.id == 'button1')
{
//do your stuff
console.log('#button1 click');
}
else
{
console.log('not a #button1 click');
}
}
我很困惑的是定义调用这个委托函数的事件的正确语法 - 这是什么? (A):
$(document).ready(function()
{
$(function()
{
$('button').click(doSomething);
});
});
或那样吗? (B):
$(document).ready(function()
{
$("button").click(doSomething);
});
哪个是正确的,为什么呢?
答
在选项A中,您只是重复了两次document.ready语法。
// These two lines are equal
$(document).ready(fn);
$(fn);
所有你需要做的是选项B
答
而选项B肯定会做到这一点的方式,如果你需要使用一个单独的函数,即在情况下,你需要调用函数从一个按钮点击以外的地方,我的首选通常是把代码放在一行。我不这样做的唯一时间是它会提高可读性。
$(function() {
$("button").click(function(e) {
if (e.target.id == 'button1') {
alert('button1 clicked');
}
...
});
});