jquery激活函数在tab切换之前运行

时间:2013-08-30 14:53:10

标签: jquery jquery-ui-tabs

运行jquery 1.9.1选项卡功能并尝试更改选项卡激活时的背景图像。 jquery有点新,并决定通过查看aria-expanded标签是否已设置为true来检测激活的选项卡。如果是这样,我抓住一个自定义标签,我已插入该标签的图像网址(称为bgimg,例如,bgimg =“url(/images/tab1img.png”))并进行更改。但是,似乎所有选项卡的aria-expanded设置为true之前,选项卡调用的activate部分中的任何内容都在运行。是这样的吗?如果是这样,我如何触发该功能,以便在激活新标签后运行该功能?

这是jquery:

$(window).load(function () {
    $('#tabs').tabs({
        activate: function (event, ui) {
            setBGImg();
        }
    });
    setBGImg();

    function setBGImg() {
        $('.ui-tabs-panel').each(function () {
            if ($(this).attr('aria-expanded') == 'true') {
                $('#backgroundImage').css('background-image', 'url(' + $(this).attr('bgImg') + ')');
            }
        });
    }
});

2 个答案:

答案 0 :(得分:0)

几乎所有事情都有jQuery事件。

您可以在激活标签之前设置自定义处理程序,这是documented here

答案 1 :(得分:0)

从JQuery UI提供的工具中定位新面板可能更好。

$('#tabs').tabs({
    activate: function (event, ui) {

        //ui.newPanel lets you target the new Panel
        var panel = ui.newPanel;
        panel.css({'background-color': 'blue'});
    }
});

您可以通过ui参数定位一些内容   - newPanel  - 新标签   - oldPanel   - oldTab

这是一个显示它的FIDDLE