Действие click зависит от выбранной вкладки
Добрый день! Прошу помощи. Застрял в одном месте...
Соорудил такую конструкцию, в ней название кнопки зависит от выбранной вкладки (таба), я сделал это так:
$('#sovet').click(function(){
document.getElementById('txt-btn').innerHTML = "НАЗВАНИЕ КНОПКИ-1"
});
$('#foto').click(function(){
document.getElementById('txt-btn').innerHTML = "НАЗВАНИЕ КНОПКИ-2"
});
А вот в теле таба (блока), где на картинке написано "содержимое блока" то, что загружается при клике на кнопку. В данном случаи это файл «fun.php» Я сделал так:
$('#btn-rnd').click(function(){
$('#rnd').animate({'opacity':0}, 500, function(){
$('#rnd').load('fun.php');
$('#rnd').animate({'opacity':1}, 500);
})
setTimeout(2000);
![]() Вопрос следующий, в данном примере работает как нужно смена названии кнопки и загрузка файла «fun.php» в таб. Но как сделать так, что бы в каждый таб загружался свой файл. То есть загружаемый файл должен меняться от того, какая вкладка выбрана. Например для первой «fun.php», для второй «fun-2.php» для третий «fun-3.php» И соответственно загружаться во вкладку тогда, когда происходит клик на кнопку. |
Можно дать каждому табу уникальный ID, типа такого: tab-1, tab-2, tab-3 и т.д. А дальше так, например:
var rnd = $('#rnd');
$('[id^="tab-"]').click(function() {
var id = this.id.split('-')[1];
rnd.fadeOut(500, function() {
$(this).load('fun-' + id + '.php').fadeIn(500);
});
});
|
Цитата:
|
Я сделал просто... При клике на таб я присваиваю переменной адрес:
$('#sovet').click(function(){
document.getElementById('txt-btn').innerHTML = "Название кнопки"
$url = "fun.php";
});
И после по клику на кнопку так:
$('#btn-rnd').click(function(){
urls = $url;
$('#rnd').animate({'opacity':0}, 500, function(){
$('#rnd').load(urls);
$('#rnd').animate({'opacity':1}, 500);
})
setTimeout(2000);
});
Осталось сделать проверку на пустоту $url и если она пустая присвоить ссылку по умолчанию... Если можно это все сделать проще, то пишите. |
И в конец... Определение сделал так:
if (typeof $url != 'undefined'); else $url = "fun.php"; Теперь все работает как нужно, но насколько это правильно написано, или может наоборот через зад решайте сами) А лучше пишите здесь... |
Теперь не разберусь, почему так не работает условие. Это я написал для проверки того, что загружать в таб:
$('#btn-rnd').click(function(){
if(typeof $url != 'undefined')
$url = "fun.php";
$('#rnd').animate({'opacity':0}, 500, function(){
$('#rnd').load($url);
$('#rnd').animate({'opacity':1}, 500);
})
setTimeout(2000);
else
if($url = 'fun.php')
$('#rnd').animate({'opacity':0}, 500, function(){
$('#rnd').load($url);
$('#rnd').animate({'opacity':1}, 500);
})
setTimeout(2000);
else
if($url = 'foto.php')
$('#foto').animate({'opacity':0}, 500, function(){
$('#foto').load($url);
$('#foto').animate({'opacity':1}, 500);
})
setTimeout(2000);
});
|
chelkaz, что я не совсем понял Вас. Сначала кликаем по табу, но ничего не должно загружаться, потом кликаем по кнопке и загружается контент зависимо от выбранного таба, так?
|
Нет, загрузка идет только по клику по кнопке. Я все сделал, но загвоздка в рандомнасти. То есть нужно что бы загружался всегда разный файл. Я сделал так: Получаю кол-во файлов в директории:
<php
$path = 'txt'; // название папки
$dir = opendir ("$path");
$i = 0; // создаём переменную для цикла
while (false !== ($file = readdir($dir))) {
if (strpos($file, '.html',1) ) {
$i++;
}
}
?>
Затем создаю массив с кол-вом, где ch равна количеству файлов в директории: var ch = <? echo $i; ?>;
var arr = new Array();
for (var i = 0; i<ch; i++)
{
arr[i] = i;
}
После этого хочу сделать так, что бы по клику вылазили разные файлы! И так как у них названия это цифры у меня, то есть 1.html 2.html и т.д. То я делаю так:
$('#btn-rnd').click(function(){
$($idtab).animate({'opacity':0}, 500, function(){
$($idtab).load($url'.html');
$($idtab).animate({'opacity':1}, 500);
})
setTimeout(2000);
});
Где $url Я бы хотел задать как всегда разное и не повторяющееся число от 1 до кол-ва файлов в директории txt Массив думаю мешать так:
function(){for (var j=0;j<arr.length;j++) arr.push(arr.splice((Math.random() * arr.length), 1));
Но сделать цикл для клика никак не получается, чтобы в нем $url брался из смешанного цикла((( Что только не пробовал! |
Цитата:
|
Экпирементируйте ;)
var ch = <?=$i?>,
prev,
rand = function() {
var n = Math.floor(Math.random() * ch) + 1;
return n == prev ? rand() : (prev = n);
};
$('#btn-rnd').click(function() {
var n = rand();
$('#tab-' + n).fadeOut(500, function() {
$(this).load('fun-' + n + '.php').fadeIn(500);
});
});
|
| Часовой пояс GMT +3, время: 14:05. |