jquery:event:event.preventDefault(); ,e未定义

时间:2012-05-31 01:24:39

标签: javascript jquery preventdefault

嘿我有一个jquery函数,它在一个锚的onclick事件上触发,该函数如下:

function dropDown(subid, e) {
 e.preventDefault();
 var sub = '#' + subid;
 // hide all submenus first
 $('.subnav').css({'display' : 'none'});
 //Show the Current Subnav 
 $(sub).css({'display' : 'block'});
}

这就是我要触发它的方式:

<a href="#!" onclick="dropDown('sn_cities')" >Cities</a>

但是我收到此错误:e is undefined

我想取消锚链接的默认onclick事件,任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:16)

您没有将事件对象(或任何内容)传递给函数的e参数。试试这个:

onclick="dropDown('sn_cities',event);"

我倾向于完全失去内联JS:

<a href="#!" data-dropDown="sn_cities">Cities</a>

$(document).ready(function() {

    $("a[data-dropDown]").click(function(e) {
       e.preventDefault();
       // hide all submenus first
       $('.subnav').hide();
       //Show the Current Subnav 
       $('#' + $(this).attr("data-dropDown")).show();
    });

});

答案 1 :(得分:0)

function dropDown(subid) {
 var sub = '#' + subid;
 // hide all submenus first
 $('.subnav').css({'display' : 'none'});
 //Show the Current Subnav 
 $(sub).css({'display' : 'block'});
}

<a href="#!" onclick="dropDown('sn_cities'); return false;" >Cities</a>

作为旁注。不建议使用内联javascript。为清楚起见,请将脚本保存在外部文件中。