2012-06-12 16 views
7

Tengo una función de clic que quiero activar fuera de la función con parámetros.Activar un evento de clic con los parámetros

<div id="menubar"> 
    <a id="menu_file_open">File Open</a> 
    <a id="menu_file_save">Save File</a> 
</div> 


$("#menubar a").click(function(event){ 

    var menu_item = $(this).attr('id'); 
    var $context = $(this); 

    switch(menu_item){ 

     case 'menu_file_open': 
      //Do menu file open dialog 
     break; 

     case 'menu_file_save': break; 

    } 

}); 

$('#menubar a').trigger('click'); //not working (ID,context not defined); 

¿Cómo pasaría la ID y el contexto del div como se hizo clic en realidad?

+5

Lo que debe funcionar ... siempre que el enlace tenga una identificación y el contexto sea un elemento de enlace. Solo un consejo: solo puede hacer '$ ('# menubar a'). Hacer clic en()' en lugar de '.trigger' –

+2

Además, es posible que desee filtrarlo a un elemento delimitador específico en lugar de activar el controlador de clics en todos a la vez, dependiendo de lo que trates de hacer, por supuesto. –

+1

Funciona: http://jsfiddle.net/fbkxk/. ¿Está jQuery cargado correctamente? – FishBasketGordo

Respuesta

6

funciona para mí:

<div id="menubar"> 
    <a id="click_me" href="#">Click me</a> 
    <a id="dont_click" href="#">Don't click</a> 
</div> 

$("#menubar a").click(function(event){ 
    var menu_item = $(this).attr('id'); 
    var $context = $(this); 

    //.... 
}); 

$('#menubar a#click_me').click();​ // or $('#menubar a#dont_click').trigger('click'); 
+1

Llamar 'click()' es solo un atajo para llamar a 'trigger (' click ') ' – FishBasketGordo

+0

¡Tienes razón! Siempre utilicé 'click()': p. ¡Actualizaré mi publicación de acuerdo con su sugerencia! – user278064

+0

@CezarisLT: ¿Sigue teniendo el problema 'context no definido'? Porque esto podría significar que tienes problemas con la biblioteca 'JQuery'. – user278064

4

se puede pasar y recuperar arbitrary data a un controlador de eventos de jQuery, así:

$(selector).click({ dataItem1: 'value1', dataItem2: 'value2' }, function(e) { 
    var val1 = e.data.dataItem1, 
     val2 = e.data.dataItem2; 
}); 

Sin embargo, debido a que su código es working here, que existe la sospecha de que puede ser otro problema, como que la biblioteca jQuery no está cargada o hay un error en otro lugar en sus scripts.

Cuestiones relacionadas