У меня такая проблема. Как это решить? когда я нажимаю «тест». Будет показано 'b'. затем я нажимаю «b». это изменит значение «а». Мне нужно значение a, которое включено в «контейнер», а не другие значения в других элементах, такие же, как имя класса «контейнер». как? Помоги мне.

<head>
<style>
    #test {
        width: 100px;
        height: 100px;
        background: blue;
        color: white;
    }
    .c {
        width: 100px;
        height: 100px;
        color: red;
        background: black;
    }

    .b {
        display: none;
        color: black;
        background: blueviolet;
        width: 100px;
        height: 100px;
    }
</style>
</head>
<div>
<div class="container"><div id="test"></div><div class="c">hello</div></div> 
<div class="b"></div>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script>
$('#test').on('click',function name(params) {
    $('.b').show();
    var a = $(this).parent().find('.c').html();
    $('.b').click(function name(params) {
        // how to change value of a?
    });
});
</script>
1
泉泉 占柱 17 Окт 2019 в 17:19
2
См. en.wikipedia.org/wiki/XY_problem. Объясните, в чем проблема.
 – 
George
17 Окт 2019 в 17:22
Из-за того, как работают закрытия javascript, вы можете просто ... изменить его. Внутри обратного вызова .click просто напишите test = 'newvalue';
 – 
TKoL
17 Окт 2019 в 17:23
B.click (функция () {test = 'a';)}. я написал это, но без изменений
 – 
泉泉 占柱
17 Окт 2019 в 17:24

2 ответа

Не знаю, почему у вас клик за один клик, но вы хотите переместить b.click из a.click. Затем вам нужно объявить вашу переменную вне a.click, иначе b.click никогда не достигнет ее.

Итак, объявите тест без значения, а затем измените значение теста при каждом щелчке.

var a;
$('#test').on('click', function name(params) {
  $('.b').show();
  a = $(this).parent().find('.c').html('toBeginning');

});
$('.b').click(function name(params) {
  a = $('.container').find('.c').html('changed')
});
#test {
  width: 100px;
  height: 100px;
  background: blue;
  color: white;
}

.c {
  width: 100px;
  height: 100px;
  color: red;
  background: black;
}

.b {
  display: none;
  color: black;
  background: blueviolet;
  width: 100px;
  height: 100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<div>
  <div class="container">
    <div id="test">Test</div>
    <div class="c">hello</div>
  </div>
  <div class="b">B</div>
</div>
0
Tiberiuscan 18 Окт 2019 в 10:39
Нет. это изменит все значения класса some-class, если его нет в родительских элементах some-class. Я только хочу изменить значение родительского элемента некоторого класса
 – 
泉泉 占柱
17 Окт 2019 в 17:44
Проверьте мой обновленный фрагмент. Вы должны вызвать переменную a, если хотите, чтобы ее можно было изменить за один клик b.
 – 
Tiberiuscan
18 Окт 2019 в 10:40

Вы это смотрите?

var a = '';
$('#test').on('click',function name(params) {
    $('.b').show();
    if(!a) {
      a = $(this).parent().find('.c').html();
    }
    $(this).parent().find('.c').html(a);
});

$('.b').click(function name(params) {
   // how to change value of a?
   $('.container .c').html('changed value');
});
#test {
    width: 100px;
    height: 100px;
    background: blue;
    color: white;
}
.c {
    width: 100px;
    height: 100px;
    color: red;
    background: black;
}

.b {
    display: none;
    color: black;
    background: blueviolet;
    width: 100px;
    height: 100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div>
  <div class="container">
    <div id="test"></div>
    <div class="c">hello</div>
  </div> 
  <div class="b"></div>
</div>
0
Amit 18 Окт 2019 в 12:52