Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Простой вопрос (https://javascript.ru/forum/jquery/78040-prostojj-vopros.html)

Biotoxsin 17.07.2019 19:21

Простой вопрос
 
Здравствуйте!

Есть такой код:

$( "#open1" ).click(function() {
	$( "#content1" ).fadeIn( "slow", function() {
	});
	});
$( "#open2" ).click(function() {
	$( "#content2" ).fadeIn( "slow", function() {
	});
	});
$( "#open3" ).click(function() {
	$( "#content3" ).fadeIn( "slow", function() {
	});
	});


Я хотел его немного сократить ибо подобных копий нужно порядком. Пробовал так но почему то не работает. Не могу понять почему.

for (count = 0; count < 5; count++){
	var open = $("#open" + count);
	var content = $("#content" + count);
	mark.click(function() {
		content.fadeIn( "slow", function() {
		});
	});
}


Помогите пожалуйста понять где я ошибся.

рони 17.07.2019 21:02

Цитата:

Сообщение от Biotoxsin
Помогите пожалуйста понять где я ошибся.

что такое mark? замените for на each или замените var на let.

MC-XOBAHCK 17.07.2019 21:54

По моему вы забыли в условии цикла объявить переменную.
Попробуйте добавить var:
for (var count = 0; count < 5; count++){

Я сам такое часто упускаю и у меня сначала всё работает, а после бабеля и минификации всё ломается.

рони 17.07.2019 22:11

MC-XOBAHCK,
после цикла элементов в указанных переменных не существует, это основная проблема.

Biotoxsin 17.07.2019 23:54

Цитата:

Сообщение от рони (Сообщение 510353)
что такое mark? замените for на each или замените var на let.

Нет. Код должен выводить блок той нумерации (#content1) кнопка которой была нажата (#open1). Или я опять туплю?

рони 18.07.2019 00:10

Biotoxsin,
один из множества вариантов ... через классы
$(function() {
var open = $(".open"), content = $( ".content" );
open.click(function() {
   var i = open.index(this);
   content.eq(i).fadeIn()
})
});

рони 18.07.2019 00:21

Biotoxsin,
или так
$(function() {
for (let count = 0; count < 5; count++){
	let open = $("#open" + count);
	let content = $("#content" + count);
	open.click(function() {
		content.fadeIn( "slow", function() {
		});
	});
}
});

рони 18.07.2019 00:26

Biotoxsin,
$(function() {
var open = $("[id^=open]"), content = $( "[id^=content]" );
open.each(function(i) {
var el = content.eq(i);
$(this).click(function() {
   el.fadeIn()
})
})
});

Biotoxsin 18.07.2019 00:33

Цитата:

Сообщение от рони (Сообщение 510359)
Biotoxsin,
или так
$(function() {
for (let count = 0; count < 5; count++){
	let open = $("#open" + count);
	let content = $("#content" + count);
	open.click(function() {
		content.fadeIn( "slow", function() {
		});
	});
}
});

Спасибо большущее!!!


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