有没有办法在 JQuery 中切换选项卡?

Posted

技术标签:

【中文标题】有没有办法在 JQuery 中切换选项卡?【英文标题】:Is There a Way of Switching Tabs in JQuery? 【发布时间】:2012-02-15 14:11:50 【问题描述】:

首先我想在我忘记之前给你链接。

http://www.roblox.com/User.aspx?ID=1

在页面底部有多个选项卡。 (齿轮、帽子、面孔、包裹等)

function checkForHat() 
    $.get (
        'http://www.roblox.com/User.aspx?ID=1',

        function parse(data) 
            var hatid1 = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_UserAssetsDataList_ctl00_AssetThumbnailHyperLink');
            var hatidtitle1 = hatid1.attr('title');
            var hatidhref1 = "http://www.roblox.com" + hatid1.attr('href');
            var hatidpi1 = $(hatid1).find('img')
            var hatidpic1 = hatidpi1.attr('src')
            hatLink1 = hatidhref1;
            hatTitle1 = hatidtitle1;
            hatPic1 = hatidpic1;
            var hatid2 = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_UserAssetsDataList_ctl01_AssetThumbnailHyperLink');
            var hatidtitle2 = hatid2.attr('title');
            var hatidhref2 = "http://www.roblox.com" + hatid2.attr('href');
            var hatidpi2 = $(hatid2).find('img')
            var hatidpic2 = hatidpi2.attr('src')
            hatLink2 = hatidhref2;
            hatTitle2 = hatidtitle2;
            hatPic2 = hatidpic2;
            var hatid3 = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_UserAssetsDataList_ctl02_AssetThumbnailHyperLink');
            var hatidtitle3 = hatid3.attr('title');
            var hatidhref3 = "http://www.roblox.com" + hatid3.attr('href');
            var hatidpi3 = $(hatid3).find('img')
            var hatidpic3 = hatidpi3.attr('src')
            hatLink3 = hatidhref3;
            hatTitle3 = hatidtitle3;
            hatPic3 = hatidpic3;
            if (hatLink3 != null && hatTitle3 != null && hatPic3 != null) 
                checkIfNew3();
            
            if (hatLink2 != null && hatTitle2 != null && hatPic2 != null) 
                checkIfNew2();
            
            if (hatLink1 != null && hatTitle1 != null && hatPic1 != null) 
                checkIfNew1();
            
        
    );
;

当然,有些变量已经在前面的代码中调用过。

现在我的问题是如何使用 JQuery 更改选项卡。就像我说的那样,标签朝底部。

这个答案开始变得至关重要,因为我有很多要求升级它所在的 chrome 扩展的请求。

谢谢。

【问题讨论】:

你在说什么标签?问题中的代码与“使用 jQuery 切换选项卡”有何关系? 看起来是 AJAX/json 的完美工作 【参考方案1】:

似乎用于执行选项卡切换的 javascript 保存在 href 属性中。您可以对该方法执行 eval。

//this will click the shirts tab     
eval($('#ctl00_cphRoblox_rbxUserAssetsPane_AssetCategoryRepeater_ctl05_AssetCategorySelector').attr('href'))

如果你想要更健壮的东西,那么:

$shirtElem = $('#assetsMenu a').filter( function() 
     if ($(this).html() == 'Shirts') return true;
);
eval($shirtElem.attr('href'));

我不喜欢它,但这看起来像自动生成的 Visual Studio 代码,这意味着它会很丑陋且难以使用 =)。我还假设您对源没有任何控制权,否则这会简单得多。

【讨论】:

什么不起作用?此代码适用于已添加到 DOM 的元素。 它暂停异常:'ReferenceError' function parse(data) 之后我添加了eval($(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_AssetCategoryRepeater_ctl05_AssetCategorySelector').attr('href')) 在那一行出错。 我不知道来自 href 的 javascript 是做什么的。完成向其附加元素后,它必须依赖页面上的某些内容。

以上是关于有没有办法在 JQuery 中切换选项卡?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 切换选项卡,而不关闭相邻的选项卡。

选项卡处于非活动状态时,jQuery setInterval太快

在Firefox中切换浏览器选项卡时jquery动画中断

在XCode 4中快速切换选项卡的方法是什么?

jquery实现的选项卡的嵌套代码实例

jquery 选项卡切换