2012-06-12 22 views
7

Mam funkcję kliknięcia, którą chcę wywołać poza funkcją z parametrami.Wyzwalanie zdarzenia kliknięcia o parametrach

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

W jaki sposób przekazałbym identyfikator i kontekst elementu div, tak jak został faktycznie kliknięty.

+5

Co powinieneś wykonać ... pod warunkiem, że link ma identyfikator, a kontekst powinien być elementem linku. Tylko wskazówka: możesz po prostu zrobić '$ ('# menubar a'). Kliknij()' zamiast '.trigger' –

+2

Możesz także filtrować to do konkretnego elementu kotwicy, zamiast uruchamiać obsługę kliknięć wszystkie na raz, w zależności od tego, co próbujesz zrobić oczywiście. –

+1

Działa: http://jsfiddle.net/fbkxk/. Czy jQuery jest poprawnie załadowany? – FishBasketGordo

Odpowiedz

6

To działa dla mnie:

<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

Wywołanie 'click()' jest skrótem do wywołania 'trigger (" kliknij ")) ' – FishBasketGordo

+0

Masz rację! Zawsze używałem 'click()': p. Zaktualizuję swój wpis zgodnie z Twoją podpowiedzią! – user278064

+0

@CezarisLT: Czy nadal masz problem "nie zdefiniowano kontekstu"? Ponieważ może to oznaczać, że masz problemy z biblioteką 'JQuery'. – user278064

4

można przekazać i pobierać arbitrary data do obsługi zdarzenia jQuery, tak:

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

Jednakże, ponieważ kod jest working here, podejrzewam, że nie może być inny problem, np. biblioteka jQuery nie jest załadowana lub w skryptach jest błąd.

Powiązane problemy