Я пытаюсь показать div один за другим, когда нажата кнопка "add_more". Первый щелчок работает так, как мне бы хотелось, но во втором щелкнете все divs show.
$(document).ready(function() {
$('#add_more').click(function() {
$('#add_more_fields').show(500);
});
});
$('#add_more').click(function() {
if($('#add_more_fields').is(':visible')) {
$('#add_more_fields2').show(500);
};
});
$('#add_more').click(function() {
if($('#add_more_fields2').is(':visible')) {
$('#add_more_fields3').show(500);
};
});
$('#add_more').click(function() {
if($('#add_more_fields3').is(':visible')) {
$('#add_more_fields4').show(500);
};
});
$('#add_more').click(function() {
if($('#add_more_fields4').is(':visible')) {
$('#add_more_fields5').show(500);
};
});
Я вижу, что проблема заключается в том, что все они привязаны к одной функции щелчка и запускаются одновременно. Как отделить события, чтобы каждый клик добавлял следующий div?
Я бы использовал другое, если в обратном порядке. Такие, что:
$('#add_more').click(function() {
if($('#add_more_fields4').is(':visible')) {
$('#add_more_fields5').show(500);
} else if($('#add_more_fields3').is(':visible')) {
$('#add_more_fields4').show(500);
} else if($('#add_more_fields2').is(':visible')) {
$('#add_more_fields3').show(500);
} else if($('#add_more_fields').is(':visible')) {
$('#add_more_fields2').show(500);
} else {
$('#add_more_fields').show(500);
}
});
Таким образом выполняется только один, каждый клик, и тот, который выполняется с наиболее возмущенным.
Не уверен, что это работает; но вы можете настроить это. Я не тестировал. Если вы можете дать jsfiddle для html; Я могу опубликовать тестовое рабочее решение.
$('#add_more').click(function(i,v){ // each time add_more is clicked
var num = + $(v).attr('id').split('add_more')[1]; // get the number from the id
var s = ['#add_more_fields' + num]
$('s').show(500);
});