有什么区别:
<script type="text/javascript">
$().ready(function() {
InitialDictionary = new Array();
LoadCurrentValues(InitialDictionary);
$("a[id*=SomeLink]").click(function() {
if (!CompareDictionaries(InitialDictionary))
{
alert('Hello')
}
}
)
})
</script>
和
<script type="text/javascript">
$().ready(function () {
InitialDictionary = new Array();
LoadCurrentValues(InitialDictionary);
$("a[id*=SomeLink]").click(CheckValuesChanged(InitialDictionary));
})
function CheckValuesChanged(InitialDictionary) {
if (!CompareDictionaries(InitialDictionary))
{
alert('Hello')
}
}
</script>
没有详细介绍我在这里想要实现的内容,有没有理由为什么匿名方法可以正常工作而对函数的调用却没有?它们不应该产生相同的结果吗?
答案 0 :(得分:2)
要调用函数,您必须执行此操作:
$("a[id*=LogoLink]").click(function(){CheckValuesChanged(InitialDictionary)});
或者:
$("a[id*=LogoLink]").click("CheckValuesChanged(InitialDictionary)"); //might work
答案 1 :(得分:2)
它们都有效,但你不能将函数绑定到像这样的事件
$("a[id*=LogoLink]").click(CheckValuesChanged(InitialDictionary));
因为a函数必须绑定到click事件。将参数传递给函数时,它返回undefined
,这不是函数。您可以通过更改第二个代码示例来解决此问题:
$().ready(function () {
InitialDictionary = new Array();
LoadCurrentValues(InitialDictionary);
$("a[id*=LogoLink]").click(CheckValuesChanged);
function CheckValuesChanged() {
if (!CompareDictionaries(InitialDictionary)) {
alert('Hello')
}
}
});
答案 2 :(得分:1)
第二个例子是错误的:
$("a[id*=LogoLink]").click(CheckValuesChanged(InitialDictionary));
应该是:
$("a[id*=LogoLink]").click(CheckValuesChanged);
但是因为你想传递InitialDictionary
作为参数,你需要使用第一种方法,它将在匿名函数中捕获它。