Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с переменной (https://javascript.ru/forum/dom-window/73994-problema-s-peremennojj.html)

Sav2907 04.06.2018 15:40

Проблема с переменной
 
Проблема следующая:
1. кликаем по Категория 1, затем <<<<
2. кликаем по Категория 2, затем клик result
Алерт показывает 1 а потом 2, а нужно только 2
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<p class="back"><<<<<</p>
<div class="show_1">
<p class="category" data-type="1">Категория 1</p>
<p class="category" data-type="2">Категория 2</p>
<p class="category" data-type="3">Категория 3</p>
</div>
<div class="show_2" style="display: none;">
	<p class="result">result</p>
</div>
<script>
$('.back').on('click', function(){
	$('.show_1').show();
	$('.show_2').hide();
});
$('.category').on('click', function(){
	$('.show_2').show();
	$('.show_1').hide();
	var a = $(this).data('type');
	$('.result').on('click', function(){
		alert(a);
	});
});
</script>

Nexus 04.06.2018 15:50

Так попробуйте:
var type = 1;

$('.back').on('click', function() {
    $('.show_1').show();
    $('.show_2').hide();
});

$('.category').on('click', function() {
    $('.show_2').show();
    $('.show_1').hide();

    type = $(this).data('type');
});

$('.result').on('click', function() {
    alert(type);
});

ps. строки 4-5 и 9-10 глаза мозолят, их как-то можно объединить )

Sav2907 04.06.2018 15:56

Ваш вариант не работает

Nexus 04.06.2018 16:01

Цитата:

Сообщение от Sav2907
Ваш вариант не работает

Не верю. https://jsfiddle.net/yotmucby/

j0hnik 04.06.2018 16:02

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<p class="back"><<<<<</p>
<div class="show_1">
<p class="category" data-type="1">Категория 1</p>
<p class="category" data-type="2">Категория 2</p>
<p class="category" data-type="3">Категория 3</p>
</div>
<div class="show_2" style="display: none;">
	<p class="result">result</p>
</div>
<script>
		var a;
$('.back').on('click', function(){
	$('.show_1').show();
	$('.show_2').hide();
});
$('.category').on('click', function(){
	$('.show_2').show();
	$('.show_1').hide();
	a = $(this).data('type');
});
	$('.result').on('click', function(){
		alert(a);
	});
</script>

Sav2907 04.06.2018 16:07

Nexus, j0hnik,
Спасибо


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