我有一个这样的文件:
//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。
我单步执行代码,发现它转到了绑定(bind)事件,因此看起来该函数正在被绑定(bind)。
但是,当我运行代码并单击登录链接时,什么也没有发生。
我在这里做错了什么吗?我应该去掉函数的参数才能使其正常工作吗?
最佳答案
问题出在你的选择器上:
$('#loginLink','#registerLink')
您需要一个字符串而不是两个:
$('#loginLink, #registerLink')
原因是2nd argument to the jQuery function是上下文。它查找与第一个参数 #loginLink
匹配的元素,该参数是第二个参数的后代。
关于javascript - 为什么我的函数没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12339699/