为什么我的函数没有被调用呢

Why could it be that my function is not getting called?

本文关键字:调用 我的 函数 为什么      更新时间:2023-09-26

我有一个这样的文件:

//function accessLinkClick(e) {
//    e.preventDefault();
//    $('#registerLink', '#loginLink')
//        .unbind('click', accessLinkClick);
//    dialog(this);
//}
function accessLinkClick(e) {
    alert("hi")
}

和另一个:

$(document).ready(function () {
$('#loginLink','#registerLink')
.bind('click', accessLinkClick);
});

我的HTML如下所示:

<a id="loginLink" class="button dialogLink" title="Login" data-href="/MyAccount/Access/Login" data-title="Admin" data-entity="n/a" data-dialog="UserAdmin" href="#">Login</a>

我在第一个文件中更改了函数的名称,运行了代码,得到了一个错误,说函数不存在。因此,这向我证明了accessLinkClick函数是已知的。然后,我将函数名称改回accessLinkClick。

我遍历代码,看到它进入绑定事件,所以看起来函数正在绑定。

然而,当我运行我的代码并点击loginLink时,什么都没有发生。

我是不是做错了什么?我应该去掉函数的参数让它工作吗?

问题出在选择器上:

$('#loginLink','#registerLink')

你需要一个字符串而不是两个:

$('#loginLink, #registerLink')

原因是jQuery函数的第二个参数是上下文。它查找与第一个参数#loginLink匹配的元素,该元素是第二个参数的后代。