使用参数触发点击事件

7

我有一个点击函数,希望在外部触发该函数并传入参数。

<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元素的ID和上下文?

5
你所拥有的应该可以使用,只要链接具有ID且上下文应为链接元素。小提示:你可以直接使用$('#menubar a').click()代替.trigger - Selvakumar Arumugam
2
此外,根据您的需求,在触发所有锚元素的单击处理程序之前,您可能希望将其过滤为特定的锚元素。 - Kevin B
1
它能够正常工作:http://jsfiddle.net/fbkxk/。jQuery已经正确加载了吗? - FishBasketGordo
我有多个项目,所以谢谢,我只需要说:$('#menubar a#ID_HERE').trigger('click'); 就可以了。感谢您,Kevin B. - Kivylius
请检查此链接,它也适用于多个元素:http://jsfiddle.net/joycse06/gPvfc/1/。虽然我不确定您是否想同时触发所有元素的点击事件。 - Prasenjit Kumar Nag
$("#ID_HERE") 就足够了。 - Esailija
2个回答

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
你说得对!我一直都用 click() :p。 根据你的提示,我会更新我的帖子! - user278064
@CezarisLT:你还在遇到“未定义上下文”的问题吗?这可能意味着你在使用JQuery库时出现了问题。 - user278064

4

您可以通过以下方式向 jQuery 事件处理程序传递和检索任意数据

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

然而,由于您的代码在这里可以运行,我怀疑可能存在其他问题,比如jQuery库未加载或脚本中有其他错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接