Интегрировать функцию jQuery в другую в пользовательском интерфейсе вкладок
Я пытаюсь интегрировать одну функцию в другую функцию, и я озадачен.
Я пытаюсь добавить функцию 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
});
});
Должна ли функция quotes сначала вызывать переменные?
И как это будет работать, чтобы div для кавычек также использовал эффект непрозрачности fx при изменении кавычек?
Редактировать 27.04.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 ответа
Код должен идти внутри фигурных скобок
$(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');
}
Вот как я бы отслеживал изменения на вкладках, а затем запускал вашу функцию котировки.
$("#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.