Глобальные переменные в jquery
Есть некий код, который отвечает за разворачивание и сворачивание определённого дива.
var ind; function getId(id){ ind = id; } $(document).ready(function(){ $(".expand_box").hide(); $(".expand1").click(function(){ $(this).parent().next().slideToggle("fast"); $(this).css("display","none"); }); $(".hide1").click(function(){ $(ind).parent().next().slideToggle(function(){ $(ind).css("display","block"); }); }); }); И есть спан который, при нажатии по нему, отправляет в функцию getId свой уникальный индификатор: <span onClick="getId('.expand$myrow1[id_game]')" class="expand$myrow1[id_game]">+</span> Общая картина: Допустим, в базе есть 3 объекта(их может быть сколько угодно), из них строится 3 дива. При нажатии на спан, нужно определять, какой именно див следует раскрыть(при этом могут быть расскрыты одновременно все дивы, либо 2 открыто, 1 скрыт, либо все скрыты и тд.) Теперь собственно, сама проблема: Если заменить $(".expand1").click(function(){на переменную, в который хранится айдишник спана, по которому клацнули: $("ind).click(function(){, то ничего работать не хочет, если же оставлять как есть, будет открыватся только span с индификатором 1, а остальные работать соответственно не будут. Использовав алерт, вижу, что переменная ind is undefined. Помогите, как сделать, что бы переменная была определена? Если есть альтернативы, как сделать то, что мне нужно, буду очень признателен. Спасибо! |
$("ind).click(function(){ это так в коде у вас????? $(*!*"*/!*ind) я про это и что говорит консоль? |
Цитата:
$(".expand1").click(function(){ |
дайте кусок кода. маленький
|
<div class="box"> <h3> Название: $myrow1[gamename]<br> Город: $myrow1[city]<br> Игроки: <br> До старта: $myrow1[datetime_of_start]<br> Фонд: <h id="color">$myrow1[pool]$</h> <span onClick="getId('.expand$myrow1[id_game]')" class="expand$myrow1[id_game]">+</span> </h3> <ul class="expand_box"> <li>Бонусы:</li> <h3><span class="hide$myrow1[id_game]">-</span></h3> </ul> </div> Это полный код дива. Весь скрипт, отвечающий за работу октрывания/закрывания дива, выкладывал в стартовом посте. |
а, точно
var ind; function getId(id){ ind = id; } $(document).ready(function(){ $(".expand_box").hide(); $(".expand1").click(function(){ $(this).parent().next().slideToggle("fast");$(this).css("display","none");}); $(".hide1").click(function(){ $(ind).parent().next().slideToggle(function(){ $(ind).css("display","block"); });}); }); а где присваивание чего-нибудь ind ?? |
В моем коде ind - это глобальная переменная, и присваевается ей значение id из функции getId, вот тут:
function getId(id){ ind = id; } Вот тут всё прекрасно работает: $(ind).parent().next().slideToggle(function(){ $(ind).css("display","block"); Но когда я подставляю вместо $(".expand2").click(function(){ вот это: $(ind).click(function(){ Не работает, так как переменная ind в этом месте почему-то undefined. Я подозреваю, что это как-то связано с тем, что переменная не получила значения, а document.ready уже сработал, но как обойти это не имею понятия. Сам я php программист, но сейчас тяну всё на себе. :cray: |
у вас создана функция,которая присваивает значение. но она нигде не вызывается.
что выводит алерт? var ind; function getId(id){ ind = id; } $(document).ready(function(){ $(".expand_box").hide(); $(".expand1").click(function(){ $(this).parent().next().slideToggle("fast");$(this).css("display","none");}); *!*alert(ind);*/!* $(".hide1").click(function(){ $(ind).parent().next().slideToggle(function(){ $(ind).css("display","block"); });}); }); |
$(".expand2").click(function(){ alert(ind); $(this).parent().next().slideToggle("fast"); $(this).css("display","none"); }); Алерт: .expand2; $(".hide2").click(function(){ alert(ind); $(ind).parent().next().slideToggle(function(){ $(ind).css("display","block"); }); }); Алерт: .expand2; Во всех других местах(тоесть внутри функции $(document).ready(function(){но не внутри других функций) Алерт выдает undefined. |
Решения так и не придумал, видимо придётся переписывать логику раскрытия дивов.
|
Часовой пояс GMT +3, время: 09:05. |