событие щелчка только в том случае, если объект был нажат непосредственно

#javascript #jquery

#javascript #jquery

Вопрос:

В приведенном ниже примере, как написать консоль только при .bradio нажатии, а не button
т. е. нажатие кнопки bradio.eq(1) должно быть проверено, но без записи в консоль

 $('.bradio').on('change', function(){
    console.log('onchange');
});

$('button').on('click', function(){
    $('.bradio').eq(1).click();
}); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='radio' class='bradio' name='bradio'  value='pub' title='PUBLIC'>
<input type='radio' class='bradio' name='bradio'  value='priv' title='PRIVATE'>
<br>
<button>CLICK</button> 

Ответ №1:

Чтобы выбрать элемент без создания события щелчка вручную, задайте его checked свойство:

 $('.bradio').on('change', function() {
  console.log('onchange');
});

$('button').on('click', function() {
  $('.bradio').eq(1).prop('checked', true);
}); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" class="bradio" name="bradio" value="pub" title="PUBLIC">
<input type="radio" class="bradio" name="bradio" value="priv" title="PRIVATE">
<br>
<button>CLICK</button>