Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.02.2015, 08:30
Новичок на форуме
Отправить личное сообщение для 0xSS Посмотреть профиль Найти все сообщения от 0xSS
 
Регистрация: 16.02.2015
Сообщений: 4

$('.forAdmin').toggle(); срабатывает дважды для 1 элемента
Имеется вот такой простенький макет:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<style>
		.forAdmin {
			display:none;
		}
	</style>
	<script type='text/javascript' language='javascript' src='/js/jquery-1.3.2.min.js'></script>
	<script type="text/javascript">
		$(window).load(function(event){
			$('#button').click(function(){
				$('.forAdmin').toggle();
			});
		});
	</script>
</head>
<body>
	<button id='button' name="push" type="submit" value="Кнопка">Кнопка</button>
	<ul>
		<li>
			<h1>Заголовок 1</h1>
			<a class='forAdmin' href='/'>Ссылка 1</a><br/>
			<a class='forAdmin' href='/'>Ссылка 2</a>
		</li>
		<li class='forAdmin'>
			<h1>Заголовок 2</h1>
			<a class='forAdmin' href='/'>Ссылка 3</a><br/>
			<a class='forAdmin' href='/'>Ссылка 4</a>
		</li>
	</ul>
</body>
</html>

Все элементы класса .forAdmin скрыты в CSS. Нажатие на кнопку должно их переключать.
Однако правильно скрипт срабатывает только при первом нажатии - все элементы .forAdmin отображаются.
При втором нажатии, когда все .forAdmin должны спрятаться, Ссылка 3 и Ссылка 4 получают "display: inline;"
И при последующих кликах Ссылка 3 и Ссылка 4 получают противоположное от остальных элементов состояние. Т.е. когда все .forAdmin скрыты - последние 2 ссылки отображаются, а когда все элементы должны быть отображены - ссылки скрываются.

Подскажите, где косяк и как исправить.
Ответить с цитированием
  #2 (permalink)  
Старый 16.02.2015, 10:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от 0xSS
Подскажите, где косяк и как исправить.
ошибка в строке 10
Ответить с цитированием
  #3 (permalink)  
Старый 16.02.2015, 10:22
Новичок на форуме
Отправить личное сообщение для 0xSS Посмотреть профиль Найти все сообщения от 0xSS
 
Регистрация: 16.02.2015
Сообщений: 4

к сожалению я вынужден мириться с этим и еще с кучей других недорозумений оставленных мне в наследство. Можно ли как то на этом фундаменте построить нормальный скрипт?
Ответить с цитированием
  #4 (permalink)  
Старый 16.02.2015, 10:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

0xSS,
то есть не судьба использовать более современную версию хотябы 1.9.1 или совсем новую 1.11.2
Ответить с цитированием
  #5 (permalink)  
Старый 16.02.2015, 10:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

0xSS,
даже 1.8.3 можно
Ответить с цитированием
  #6 (permalink)  
Старый 16.02.2015, 10:31
Новичок на форуме
Отправить личное сообщение для 0xSS Посмотреть профиль Найти все сообщения от 0xSS
 
Регистрация: 16.02.2015
Сообщений: 4

будут ли в новых версиях поддерживаться скрипты написанные под 1.3? Ведь их не я писал и как они себя поведут при обновлении я не знаю.
Ответить с цитированием
  #7 (permalink)  
Старый 16.02.2015, 10:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

0xSS,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<style>
		.forAdmin {
			display:none;
		}
        .forAdmin.show {
			display:block;
		}
	</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
	<script type="text/javascript">
		$(window).load(function(event){
			$('#button').click(function(){
				$('.forAdmin').toggleClass('show');
			});
		});
	</script>
</head>
<body>
	<button id='button' name="push" type="submit" value="Кнопка">Кнопка</button>
	<ul>
		<li>
			<h1>Заголовок 1</h1>
			<a class='forAdmin' href='/'>Ссылка 1</a><br/>
			<a class='forAdmin' href='/'>Ссылка 2</a>
		</li>
		<li class='forAdmin'>
			<h1>Заголовок 2</h1>
			<a class='forAdmin' href='/'>Ссылка 3</a><br/>
			<a class='forAdmin' href='/'>Ссылка 4</a>
		</li>
	</ul>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 16.02.2015, 10:35
Новичок на форуме
Отправить личное сообщение для 0xSS Посмотреть профиль Найти все сообщения от 0xSS
 
Регистрация: 16.02.2015
Сообщений: 4

спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Each срабатывает только для одного элемента Александр222 Общие вопросы Javascript 1 04.08.2014 14:12
не срабатывает onchange для <input type="text" thunder2 Events/DOM/Window 5 14.01.2010 10:37
эмуляция события click для элемента select Polo Events/DOM/Window 4 16.12.2009 13:29
onload на iframe срабатывает дважды hogart Events/DOM/Window 3 09.12.2009 18:09
Применение функции для каждого элемента sergeygerasimov jQuery 2 26.11.2008 11:15