Чтобы удалить значение из input
, используйте val('')
. Кроме того, next()
не работает в этом случае, так как элементы не являются братьями и сестрами; Вы echo
текстовый узел между ними. Чтобы исправить это, вы можете обернуть каждый зацикленный блок в div
и использовать комбинацию closest()
и find()
.
Также обратите внимание, что вы можете упростить show()
/ hide()
logi c вместо использования toggle()
, предоставив свойство checked
в качестве логического аргумента, определяющего, должен ли контент быть видимым или нет.
Наконец, используйте элементы label
, чтобы пользователь мог щелкнуть текст на флажок, чтобы проверить его.
jQuery($ => {
$('input.maxtickets_enable_cb').change(function() {
$(this).closest('.row').find('.max_tickets').toggle(this.checked).find('input').val('');
}).trigger('change');
});
.max_tickets { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<label>
<input type="checkbox" class="maxtickets_enable_cb" name="opwp_wootickets[]" value="id1" />
Name #1
</label>
<div class="max_tickets">
<input type="text" name="link[]" class="link">
</div>
</div>
<div class="row">
<label>
<input type="checkbox" class="maxtickets_enable_cb" name="opwp_wootickets[]" value="id2" />
Name #2
</label>
<div class="max_tickets">
<input type="text" name="link[]" class="link">
</div>
</div>