如何在使用delegate()处理其事件的元素上触发()事件

时间:2012-09-19 20:31:00

标签: jquery delegates triggers

我在页面上有一个标签式导航。如果在页面加载时在URL中传递标签标识符,我想显示相应的选项卡,例如http://example.com/page.html#my-tab

目前,触发要显示的标签的A标签的事件处理程序被委托给它的父级:

$("nav.tabs").delegate("a", "click", function (e) {
    //trigger event
}

我正在检查URL中的HASH的页面加载,检查它是否对应于A标记的HREF属性,然后触发该事件但它不起作用。

var tab = window.location.hash;

    if (tab != undefined) {
        console.log(tab)
        if ( $("a[href="+tab+"]" ).length > 0) {
            console.log(tab)
            $("a[href="+tab+"]").trigger("click");  
        }
    }

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

我发现它适用于Firefox,但它在Chrome或IE中都不起作用。最好的方法是,而不是使用匿名函数,你可以命名,并“伪造”调用

var $nav_tabs = $("nav.tabs");
$nav_tabs.delegate("a", "click", function clickme(e) {
 //trigger event
});

var tab = window.location.hash;
if (tab != undefined) {
    console.log(tab);
    if ((tab = $nav_tabs.find("a#" + tab)).length > 0) {
        console.log(tab);
        clickme.apply( $nav_tabs, [ { target: this } ]);   
    }
}