2012-06-12 43 views
7

Tôi có chức năng nhấp mà tôi muốn kích hoạt bên ngoài chức năng với thông số.Kích hoạt sự kiện nhấp chuột với thông số

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

Tôi sẽ chuyển ID và ngữ cảnh của div như thế nào khi thực sự được nhấp.

+5

Những gì bạn phải làm việc .. miễn là liên kết có ID và ngữ cảnh phải là phần tử liên kết. Chỉ cần một mẹo: Bạn chỉ có thể làm '$ ('# menubar a'). Click()' thay vì '.trigger' –

+2

Ngoài ra, bạn có thể muốn lọc xuống một phần tử neo cụ thể thay vì kích hoạt trình xử lý nhấp chuột trên tất cả chúng cùng một lúc, tùy thuộc vào những gì bạn đang cố gắng làm tất nhiên. –

+1

Nó hoạt động: http://jsfiddle.net/fbkxk/. JQuery có được tải đúng không? – FishBasketGordo

Trả lời

6

Nó làm việc cho tôi:

<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

Gọi 'click()' chỉ là một cắt ngắn để gọi 'kích hoạt ('click') ' – FishBasketGordo

+0

Bạn đúng! Tôi luôn sử dụng 'click()': p. Tôi sẽ cập nhật bài đăng của tôi theo gợi ý của bạn! – user278064

+0

@CezarisLT: Bạn vẫn đang gặp vấn đề 'bối cảnh không được định nghĩa'? Bởi vì điều này có thể có nghĩa là bạn có vấn đề với thư viện 'JQuery'. – user278064

4

Bạn có thể vượt qua và lấy arbitrary data đến một xử lý sự kiện jQuery, như vậy:

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

Tuy nhiên, bởi vì mã của bạn là working here, tôi nghi ngờ rằng có có thể là một vấn đề khác, như thư viện jQuery không được tải hoặc có lỗi khác trong tập lệnh của bạn.

Các vấn đề liên quan