2013-04-30 81 views
0

我阅读下面的,但还是要讨论.... Meaning of evt = (evt) ? evt : window.eventjQuery的 - 功能参数

//会传递EVT需要,因为它不是在函数中使用??? ---试图让我的思想围绕这个jQuery的东西。

A)

$('#' + _ids.btnPrintServiceCode).on('click', function (evt) { 
     alert('Hello World') 
    }); 

OR

B)

$('#' + _ids.btnPrintServiceCode).on('click', function() { 
     alert('Hello World') 
    }); 
+0

备注:无论你想要什么,你都可以调用'evt'。你可以称它为'function(IAmMoojjoo)',它仍然可以工作:[demo](http://jsfiddle.net/dirtyd77/sZEuC/1/)。也开始使用['console.log()'](http://stackoverflow.com/questions/4743730/what-is-console-log-and-how-do-i-use-it)而不是'alert( )';它是一个更好的调试工具。 – Dom 2013-04-30 18:10:36

回答

3

你不需要通过evt如果不使用它...它是可选的...然而,它不会产生问题...

你基本上通过evt如果你需要听的事件......说你要防止某些元素的默认行为,所以u需要EVT这里

HTML

<a href="#"></a> 

jQuery的

$('a').on('click', function (evt) { 
    evt.preventDefault(); // this will prevent the deafult behaviour of that element 
    alert('Hello World'); 
}); 

$('input').keyup(function(e){ //here we need to pass e as we are using e to get ther keyCode that was pressed 
    if(e.keyCode == 8) 
    { 
     alert('test'); 
    } 
}); 
+0

所以它会伤害任何东西。我正在从另一位开发人员那里接受工作? – Moojjoo 2013-04-30 18:02:12

+1

事件对象总是被传递给你的函数。您不必为其添加参数。 – 2013-04-30 18:02:27

+0

那么为什么会写成像A)?希望更好地理解这一点。提前谢谢你。 – Moojjoo 2013-04-30 18:03:29

1

这样想吧。可以说我有这样的功能:

function foo (bar) { 
    alert("worky"); 
} 
foo("foobar"); // worky 

由于函数里面我绝对实际使用bar,我可以从参数列表中删除bar简化功能。

function foo() { 
    alert("worky"); 
} 
foo("foobar"); // worky 

两者都会有相同的结果。事件绑定也是如此。既然你从不使用evt,你没有理由把它传递给函数,但是如果你这样做,它不会伤害任何东西。

如果以前的开发人员总是将evt传递给事件处理函数回调,则应该继续这样做以保持代码一致,但这完全取决于您。

+0

+1不错,简单 – Dom 2013-04-30 18:12:49

+0

太棒了,就是这样...谢谢---- LIGHTBULB ...丁丁丁 – Moojjoo 2013-04-30 18:19:09