将 jQuery 函数集成到选项卡 UI 中的另一个函数中

发布于 2024-11-03 14:46:32 字数 1381 浏览 4 评论 0原文

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

我想做的是添加一个 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]);
    });

下面是选项卡初始化(以及另一个在选项卡更改时折叠 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();
            });
        }
    });
});

I'm trying to integrate one function into another function and am puzzled.

What I'm trying to do is add a jQuery function that will call a random quote, and I want that function to fire on a tab change in jQuery Tabs UI.

This is the random quote function:

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

And below this is the tabs init (along with another function that collapses divs when a tab is changed):

$(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
    }); 
});

Does the quotes function need to have the variables called first?

And, how would it work to make the quote div also use the fx opacity effect when it changes quotes?

Edit 4/27/11

This works and uses the fx effect in the function:

$(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();
            });
        }
    });
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

客…行舟 2024-11-10 14:46:32

代码应该放在大括号内,

$(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');
}

The code should go inside the curly braces

$(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!
    }); 
});

Personally, I'd put it in the 'show' event of the tab, but that shouldn't be a problem.

I've setup a fiddle with some test code for you to see how it should be : 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');
}
二货你真萌 2024-11-10 14:46:32

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

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

Here is how I would monitor for a change on the tabs and then kick off your quote function.

$("#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();
    });
}

The update_quote function could be cleaned up and made simpler, I kept it very verbose so you could see how to update it. You can chain your jquery effects also.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文