2012-05-31 20 views
5

hey yo tengo una función jQuery que se desencadena el evento onclick de un ancla de la función es la siguiente:jquery: event: event.preventDefault(); , Correo no se define

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'}); 
} 

esto es cómo i Tring para desencadenarla:

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

Sin embargo, estoy recibiendo este error: e is undefined

quiero cancelar el evento onclick predeterminado del enlace de anclaje, cualquier ayuda sería apreciada.

Respuesta

15

No está pasando el objeto de evento (o nada) al parámetro e de la función. Prueba esto:

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

Me inclinaría a perder la línea JS por completo sin embargo:

<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(); 
    }); 

}); 
+0

qué tonta fue esa lol, gracias @nnnnnn – Amyth

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> 

Como una nota al margen. Inline-javascript no es recomendable. Mantenga sus scripts en un archivo externo para mayor claridad.

+0

Gracias por su respuesta a tratar de que ahora, sólo curiosidad, no es posible pasar parámetros con otros evento en jquery? – Amyth

+0

puede, como nnnnnn ha publicado también. – ahren

+0

Llama al preventDefault para evitar que un ancla se dispare y salte a un enlace "#", simplemente elimine eso? –