Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.04.2011, 16:54
IHB IHB вне форума
Новичок на форуме
Отправить личное сообщение для IHB Посмотреть профиль Найти все сообщения от IHB
 
Регистрация: 28.04.2011
Сообщений: 7

Глобальные переменные в 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. Помогите, как сделать, что бы переменная была определена? Если есть альтернативы, как сделать то, что мне нужно, буду очень признателен. Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 28.04.2011, 17:27
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

$("ind).click(function(){



это так в коде у вас?????

$(*!*"*/!*ind)


я про это

и что говорит консоль?
Ответить с цитированием
  #3 (permalink)  
Старый 28.04.2011, 17:31
IHB IHB вне форума
Новичок на форуме
Отправить личное сообщение для IHB Посмотреть профиль Найти все сообщения от IHB
 
Регистрация: 28.04.2011
Сообщений: 7

Сообщение от melky Посмотреть сообщение
$("ind).click(function(){



это так в коде у вас?????

$(*!*"*/!*ind)


я про это

и что говорит консоль?
Нет, это я опечатался, когда писал. Проблема именно в том, что переменную ind не видно, при подстановке её в
$(".expand1").click(function(){
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2011, 17:36
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

дайте кусок кода. маленький
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2011, 17:45
IHB IHB вне форума
Новичок на форуме
Отправить личное сообщение для IHB Посмотреть профиль Найти все сообщения от IHB
 
Регистрация: 28.04.2011
Сообщений: 7

<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>


Это полный код дива. Весь скрипт, отвечающий за работу октрывания/закрывания дива, выкладывал в стартовом посте.
Ответить с цитированием
  #6 (permalink)  
Старый 28.04.2011, 17:49
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

а, точно

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 ??
Ответить с цитированием
  #7 (permalink)  
Старый 28.04.2011, 17:56
IHB IHB вне форума
Новичок на форуме
Отправить личное сообщение для IHB Посмотреть профиль Найти все сообщения от IHB
 
Регистрация: 28.04.2011
Сообщений: 7

В моем коде 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 программист, но сейчас тяну всё на себе.
Ответить с цитированием
  #8 (permalink)  
Старый 28.04.2011, 18:00
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

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

что выводит алерт?

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


});
Ответить с цитированием
  #9 (permalink)  
Старый 28.04.2011, 18:08
IHB IHB вне форума
Новичок на форуме
Отправить личное сообщение для IHB Посмотреть профиль Найти все сообщения от IHB
 
Регистрация: 28.04.2011
Сообщений: 7

$(".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.
Ответить с цитированием
  #10 (permalink)  
Старый 30.04.2011, 20:13
IHB IHB вне форума
Новичок на форуме
Отправить личное сообщение для IHB Посмотреть профиль Найти все сообщения от IHB
 
Регистрация: 28.04.2011
Сообщений: 7

Решения так и не придумал, видимо придётся переписывать логику раскрытия дивов.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript глобальные переменные anset jQuery 7 22.12.2010 17:31
jQuery object в xpath. Глобальные события solarix jQuery 1 29.10.2010 16:40
глобальные и локальные переменные San4ezy Элементы интерфейса 4 10.10.2010 19:23
jQuery и переменные JavaScript master-sheff AJAX и COMET 2 22.01.2010 21:28
JavaScript Глобальные переменные MixMe Javascript под браузер 1 12.07.2009 14:04