您不能只使用window.event
来控制事件。尝试像这样标准化它:
function sendDetails(e, type) {
var evt = window.event || e;
if (evt.preventDefault) {
evt.preventDefault();
} else {
evt.returnValue = false;
}
// ...
}
您的 HTML 必须是:
<a href="#" class="button" onclick="sendDetails(event, 'Edu');">ASDF</a>
另一种非 jQuery 解决方案是将您的 HTML 修改为:
<a href="#" class="button" onclick="sendDetails(event, 'Edu'); return false;">ASDF</a>
在这种情况下,您不必event
在sendDetails
函数中使用任何处理。将return false;
自动阻止默认行为。sendDetails
但请注意 - 如果您的函数中发生任何异常,return false;
则不会执行并允许默认行为。这就是我喜欢使用的原因preventDefault
- 您可以在函数中立即调用它以立即停止行为,然后执行您需要的操作。
同时,如果您使用的是 jQuery,请尝试像这样绑定 click 事件:
$(document).ready(function () {
$(".button").on("click", function (e) {
e.preventDefault();
// Your sendDetails code (without the "event" stuff)
// OR call sendDetails (and remove the "event" stuff in the sendDetails function)
});
});
在这种情况下,您的 HTML 将是:
<a href="#" class="button">ASDF</a>
尽管定位到适用的特定元素会容易得多,而不是使用.button
我提供的选择器。我确信“按钮”类不仅仅适用于这些目标<a>
,但也许我错了:)
在这种情况下使用 jQuery 很好,因为它已经标准化了event
对象,您可以只使用我在回调e
中包含的变量。click
我确信它不仅仅是window.event || e
,所以我更喜欢/建议使用 jQuery 来处理事件。