Интегрировать функцию jQuery в другую в интерфейсе вкладок - PullRequest
0 голосов
/ 26 апреля 2011

Я пытаюсь интегрировать одну функцию в другую функцию, и я озадачен.

Я пытаюсь добавить функцию jQuery, которая будет вызывать случайную кавычку, и я хочу, чтобы эта функция запускаласьна вкладке изменить в пользовательском интерфейсе jQuery Tabs.

Это функция случайной кавычки:

$.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 ]

1 голос
/ 27 апреля 2011

Код должен идти внутри фигурных скобок

$(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');
}
1 голос
/ 27 апреля 2011

Вот как я бы отслеживал изменения на вкладках, а затем запускал вашу функцию котировки.

$("#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.

...