2012-06-12 2 views
7

У меня есть функция щелчка, которую я хочу вызвать за пределами функции с параметрами.Запустить событие click с параметрами

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

Как бы я передал идентификатор и контекст div, как это было на самом деле нажато.

+5

Что вы должны работать .. при условии, что ссылка имеет идентификатор, а контекст должен быть элементом ссылки. Просто подсказка: вы можете просто сделать '$ ('# menubar a'). Click()' вместо '.trigger' –

+2

Также вы можете отфильтровать это до определенного элемента привязки, а не запускать обработчик кликов на все они сразу, в зависимости от того, что вы пытаетесь сделать, конечно. –

+1

Работает: http://jsfiddle.net/fbkxk/. Загружен ли jQuery правильно? – FishBasketGordo

ответ

6

Это работает для меня:

<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

Вызов 'click()' является просто сокращением для вызова 'trigger ('click') ' – FishBasketGordo

+0

Вы правы! Я всегда использовал 'click()': p. Я обновляю свой пост в соответствии с вашим намеком! – user278064

+0

@CezarisLT: У вас все еще проблема 'context not defined'? Потому что это может означать, что у вас проблемы с библиотекой JQuery. – user278064

4

Вы можете передавать и получать arbitrary data в обработчик событий JQuery, например, так:

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

Однако, поскольку ваш код working here, я подозреваю, что там может быть другой проблемой, например, если библиотека jQuery не загружена или есть еще что-то еще в ваших скриптах.

Смежные вопросы