使用jQuery UI选项卡防止异常

时间:2011-05-31 22:10:30

标签: javascript jquery jquery-ui

我正在为jquery ui tab控件添加一些自定义选项卡。

$("#tabs").tabs("add","#tabContent0","CLICK ME TO CHANGE PAGE",0);
$('a[href="#tabContent0"]').attr("href","javascript:window.location='http://www.google.co.uk';");

是的,这有点像黑客攻击,但它正是我所需要的,并提供了一种很好的方式来将链接返回到以前的父页面。

jquery抛出以下异常:“jQuery UI选项卡:不匹配的片段标识符。”

这是抛出的行似乎试图使标签容器在jquery ui中可见(确切的行不会有帮助,因为缩小和从官方站点自定义构建)。

显然我只是重定向但是jquery有额外的代码来选择选项卡(它不存在)。在Internet Explorer中,如果用户启用了脚本错误,他们将看到在窗口位置发生变化之前抛出异常,这是我无法实现的。

我不能把try catch放在这个代码中,因为它是jquery ui中抛出异常的代码。

无论如何,我可以防止抛出此异常或以不同的方式实现相同的方式而无需修改jquery ui

编辑:我现在想知道是否有办法覆盖由jquery放置在元素上的on click事件挂钩..它肯定在那里我无法看到的东西。

编辑:我现在必须注销,但是我已经取得了一些进展,如果有人可以帮助我获得正确的URL,使用此代码可以防止异常,但重定向到“http:// myurl / undefined”

$('#tabs').bind('tabsselect', function(event, ui) {

if(ui.index<2) //ignore this will change to get current tab count -1 (so the end tab is left as it is
{
        window.location=$('#'+ui.tab).attr("href"); //attr href is undefined, how do i use ui.tab properly to get the right url
        return false;
}

});

2 个答案:

答案 0 :(得分:2)

在Chrome和IE8中,它对我有用。

我也尝试过这段代码并且有效:

$("#tabs").tabs("add","#tabContent0","CLICK ME TO CHANGE PAGE",0);
$('a[href="#tabContent0"]').click(function() {
    document.location='http://www.google.co.uk/';
});

我没有更改href属性,而是在新标签的click事件上添加了一个处理程序。这将使标签切换,然后更改位置。

答案 1 :(得分:1)

来自jQuery UI文档:

$('#example').tabs({
    select: function(event, ui) {
        var url = $.data(ui.tab, 'load.tabs');
        if( url ) {
            location.href = url;
            return false;
        }
        return true;
    }
});

虽然,jQuery的标签,呃,方法,应该支持传递标签和面板的选择器,这样你就可以创建链接,而不必反对刺。