我有这段代码:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('a.one').click(function(event){
event.preventDefault();
});
});
function test(event){
event.preventDefault();
}
</script>
<style type="text/css">
a.test { font-weight: bold; }
body { font-family:sans-serif; background-color:#AAAAAA;}
</style>
</head>
<body>
<a class="one" href="http://jquery.com/">jQuery</a>
<br/>
<a class="two" href="http://stackoverflow.com/" onclick='test(event)'>stack overflow</a>
</body>
</html>
测试函数现在不能正常工作,因为常规的javascript事件不支持jQuery事件preventDefault-function。有没有办法在jQuery事件中包装常规javascript事件,以便我可以使用例如的preventDefault?
答案 0 :(得分:11)
答案 1 :(得分:5)
我发现在jQuery事件中包装本机事件的最佳方法是使用fix
:
event = $.event.fix(event);
请注意,此功能不是公共API的一部分(尽管它确实应该是这样)。
答案 2 :(得分:0)
我认为你可能正在使用onclick ='test(event)'传递事件。我认为onclick ='test'就足够了。我可能错了。
答案 3 :(得分:0)
是(见达林的回答)。您也可以解决IE缺少preventDefault的问题(这实质上就是jQuery正在做的事情):
if ('preventDefault' in event)
e.preventDefault();
else
e.returnValue= false;
答案 4 :(得分:0)
当你只想执行javascript - 而不是重定向 - 当你点击href时,在你的点击功能中使用“return false”。例如:
$(function(){
$('a.one').click(function(event){
var condition = confirm('Do you want to redirect to ...?');
return condition == true;
});
});
如果您不希望链接重定向,请使用'javascript:void(0);'作为href属性,所有浏览器仍然会将其渲染为链接而不是锚点(某些IE版本会这样做)。