【问题标题】:Integrate a jQuery function into another in Tabs UI在 Tabs UI 中将 jQuery 函数集成到另一个函数中
【发布时间】:2011-04-26 19:07:09
【问题描述】:

我正在尝试将一个功能集成到另一个功能中并且很困惑。

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

这是随机引用函数:

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

下面是选项卡初始化(以及另一个在选项卡更改时折叠 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 不透明度效果?

2011 年 4 月 27 日编辑

这工作并在函数中使用了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();
            });
        }
    });
});

【问题讨论】:

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


    【解决方案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!
        }); 
    });
    

    就个人而言,我会将它放在选项卡的“显示”事件中,但这应该不是问题。

    我已经设置了一些测试代码,让你看看它应该是怎样的: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');
    }
    

    【讨论】:

    • 啊,效果很好。在这里学习东西。而 jsfiddle 是一个很棒的工具。现在唯一的问题是页面完全重新加载,或者第一次访问页面时,引号 div 是空白的,我可以理解,因为没有触发任何选项卡。现在我想知道是否有办法在#quotescontainer 的首页加载时包含一些静态文本,即“欢迎...”而不是随机引用?
    • @songdogtech。好吧,“显示”实际上也会在页面加载时触发。 “选择”仅在有人单击时触发。您也可以将文本放在选项卡本身中,以便默认显示内容。
    【解决方案2】:

    以下是我将如何监控选项卡上的更改,然后启动您的报价功能。

    $("#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 效果。

    【讨论】:

    • 使用上面 JohnP 的示例的 click 函数会更好,只需在选项卡的选择中包含 update_quote() 函数调用。
    猜你喜欢
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2013-12-17
    • 1970-01-01
    相关资源
    最近更新 更多