在Tabs UI中将jQuery函数集成到另一个函数中

时间:2011-04-26 19:07:10

标签: jquery jquery-ui jquery-tabs jquery-address

我正在尝试将一个函数集成到另一个函数中并且感到困惑。

我要做的是添加一个jQuery函数,它将调用一个随机引用,我希望该函数在jQuery Tabs UI中的选项卡更改时触发。

这是随机引用函数:

$.get('quotes.txt', function(data) {
        var quotes = data.split("\@");
        var idx = Math.floor(quotes.length * Math.random());
        $('.quotes').html(quotes[idx]);
    });

下面是选项卡init(以及更改选项卡时折叠div的另一个函数):

$(document).ready(function() { 
    var $tabs= $("#tabs").tabs({
        fx : { 
            opacity: 'toggle' 
        },
        select : function(event, ui) {
            $(".entry-content").hide();                
        }                  //I assume it goes near here, but no luck
    }); 
});

引号函数是否需要首先调用变量?

并且,如果引用div在更改引号时也使用fx不透明效果,它将如何工作?

编辑4/27/11

这可以在函数中使用fx效果:

$(document).ready(function () {
    var $tabs = $("#tabs").tabs({

        fx: {
            opacity: 'toggle'
        },

        select: function (event, ui) {
            $(".entry-content").hide();

            $('div#quotescontainer').load('quotes.html', function () {
                var $quotes = $(this).find('div.quote');
                var n = $quotes.length;
                var random = Math.floor(Math.random() * n);
                $quotes.hide().eq(random).fadeIn();
            });
        }
    });
});

2 个答案:

答案 0 :(得分:1)

以下是我如何监控选项卡上的更改,然后启动引用功能。

$("#tabs ul li a").click(function(e) {
  update_quote();
}); 

function update_quote() {
    $.get('quotes.txt', function(data) {
        var quotes = data.split("\@");
        var idx = Math.floor(quotes.length * Math.random());
        $('.quotes').fadeOut();
        $('.quotes').html(quotes[idx]);
        $('.quotes').fadeIn();
    });
}

update_quote函数可以清理并简化,我保持非常详细,以便您可以看到如何更新它。你也可以链接你的jquery效果。

答案 1 :(得分:1)

代码应该进入花括号

$(document).ready(function() { 
    var $tabs= $("#tabs").tabs({
        fx : { 
            opacity: 'toggle' 
        },
        select : function(event, ui) {
            $(".entry-content").hide();                
            // <-- code goes here
        }                  //I assume it goes near here, but no luck <-- NO!
    }); 
});

就个人而言,我会把它放在标签的'show'事件中,但这应该不是问题。

我已经设置了一些测试代码,以便您了解它应该如何:http://jsfiddle.net/PyN5Y/1/

$( "#tabs" ).tabs({
    select: function(event, ui) {
        alert('triggered on select');
        doStuff();    
    },
    show: function(event, ui) {
        alert('triggered on show');
        doStuff();
    }
});

function doStuff() {
    alert('doing stuff');
}