3

我在页面上有一个标签样式导航。如果页面加载时在 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");  
        }
    }

有什么建议么?谢谢。

4

1 回答 1

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 } ]);   
    }
}
于 2012-12-06T21:09:07.313 回答