Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   $('.forAdmin').toggle(); срабатывает дважды для 1 элемента (https://javascript.ru/forum/jquery/53734-%24-%27-foradmin%27-toggle-%3B-srabatyvaet-dvazhdy-dlya-1-ehlementa.html)

0xSS 16.02.2015 08:30

$('.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 ссылки отображаются, а когда все элементы должны быть отображены - ссылки скрываются.

Подскажите, где косяк и как исправить.

рони 16.02.2015 10:19

Цитата:

Сообщение от 0xSS
Подскажите, где косяк и как исправить.

ошибка в строке 10

0xSS 16.02.2015 10:22

к сожалению я вынужден мириться с этим и еще с кучей других недорозумений оставленных мне в наследство. Можно ли как то на этом фундаменте построить нормальный скрипт?

рони 16.02.2015 10:26

0xSS,
то есть не судьба использовать более современную версию хотябы 1.9.1 или совсем новую 1.11.2

рони 16.02.2015 10:28

0xSS,
даже 1.8.3 можно

0xSS 16.02.2015 10:31

будут ли в новых версиях поддерживаться скрипты написанные под 1.3? Ведь их не я писал и как они себя поведут при обновлении я не знаю.

рони 16.02.2015 10:32

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>

0xSS 16.02.2015 10:35

спасибо


Часовой пояс GMT +3, время: 07:20.