Як запустити подію клацання прапорця, навіть якщо вона перевірена за допомогою коду Javascript?


80

У мене є багато прапорців на моїй сторінці, і є прапорець select all, який встановлює всі прапорці. Якимось чином я хочу наслідувати цю клікову подію прапорця, навіть якщо це позначено / знято за допомогою кнопки вибору всіх. Як я можу це зробити?

Відповіді:


117

Ви можете використовувати .trigger()метод jQuery . Див. Http://api.jquery.com/trigger/

Наприклад:

$('#foo').trigger('click');

13
Ви також можете просто зателефонувати $('#foo').click(), що ефективно робить те саме.
Kevin Babcock

2
Як це зробити за допомогою чистого JavaScript?
Пол

6
з'являється trigger('click')перемикає поточне значення. Якщо ви хочете просто встановити його потім встановити checkedістину потім викликати triggerHandler (...) stackoverflow.com/questions/10268222 / ...
rogerdpack

1
Як саме такі публікації позначаються як правильні, коли вони потребують використання сторонніх виробників? Він не просив рішення jQuery.
Wancieho

@Wancieho Питання позначене як "jquery".
Марк Робінсон

15

Отримання статусу перевірки

var checked = $("#selectall").is(":checked");

Потім для налаштування

$("input:checkbox").attr("checked",checked);

9
Не пробував цього, attrяк я використовую propсьогодні, але цей метод лише перевіряє прапорці, він не запускає подію натискання для кожного з них
EvilDr

9

Ви також можете використовувати .change()функцію

Наприклад:

$('form input[type=checkbox]').change(function() { console.log('hello') });

Це не працює для мене, коли зміна прапорця здійснюється через Javascript.
Flimm

6

немає gQuery

document.getElementById ('your_box'). onclick ();

Я використовував певний клас у своїх прапорцях.

var x = document.getElementsByClassName("box_class");
var i;
for (i = 0; i < x.length; i++) {
    if(x[i].checked) x[i].checked = false;
    else x[i].checked = true;
    x[i].onclick();
   }

6

Ви також можете цим скористатися, сподіваюся, ви зможете їм подати.

$(function(){
  $('#elements input[type="checkbox"]').prop("checked", true).trigger("change");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<div id="elements">
  <input type="checkbox" id="item-1" value="1"> Item 1 <br />
  <input type="checkbox" id="item-2" value="2" disabled> Item 2 <br /> 
  <input type="checkbox" id="item-3" value="3" disabled> Item 3 <br />
  <input type="checkbox" id="item-4" value="4" disabled> Item 4 <br />
  <input type="checkbox" id="item-5" value="5"> Item 5
</div>


4

Функцією тригера від jQuery може бути ваша відповідь.

Документи jQuery говорять: Будь-які обробники подій, приєднані до .on () або одного з методів швидкого доступу, запускаються, коли відбувається відповідна подія. Однак їх можна запускати вручну, використовуючи метод .trigger (). Виклик .trigger () виконує обробники в тому ж порядку, в якому вони були б, якби подія була ініційована природним чином користувачем

Таким чином, найкращим рішенням в один рядок має бути:

$('.selector_class').trigger('click');

//or

$('#foo').click();

1
  $("#gst_show>input").change(function(){

    var checked = $(this).is(":checked");
    if($("#gst_show>input:checkbox").attr("checked",checked)){
      alert('Checked Successfully');
    }

  });

2
CAN U EXPLAIN СВІЙ КОД
Yilmaz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.