Как проверить флажок выбора флажка в JQuery? [Дубликат]

Буквально самый простой способ исправить NullReferenceExeption имеет два пути. Если у вас есть GameObject, например, с прикрепленным скриптом и переменной с именем rb (rigidbody), эта переменная начнет пустую, когда вы начнете игру. Вот почему вы получаете NullReferenceExeption, потому что на компьютере нет данных, хранящихся в этой переменной.

В качестве примера я буду использовать переменную RigidBody. Мы можем добавить данные действительно легко на самом деле несколькими способами:

  1. Добавить RigidBody к вашему объекту с помощью AddComponent> Физика> Rigidbody Затем зайдите в свой скрипт и введите rb = GetComponent<Rigidbody>();. Эта строка кода работает лучше всего под ваши функции Start() или Awake().
  2. Вы можете добавить компонент программно и назначить переменную одновременно с одной строкой кода: rb = AddComponent<RigidBody>();

Дальнейшие заметки: если вы хотите, чтобы единство добавлялось компонент для вашего объекта, и вы, возможно, забыли добавить его, вы можете ввести [RequireComponent(typeof(RigidBody))] над объявлением класса (пробел ниже всех ваших приложений). Наслаждайтесь и получайте удовольствие от игр!

9
задан Felix Loether 3 December 2011 в 20:59
поделиться

8 ответов

Изменить: Исходное решение в этом ответе неэффективно и не должно использоваться. См. Пересмотренное решение на основе комментариев и примеров из других ответов на этот вопрос.

Исходное (плохое) решение следует:

// DO NOT USE; SEE BELOW
$('button').click(function () {
  var atLeastOneIsChecked = false;
  $('input:checkbox').each(function () {
    if ($(this).is(':checked')) {
      atLeastOneIsChecked = true;
      // Stop .each from processing any more items
      return false;
    }
  });
  // Do something with atLeastOneIsChecked
});

Использование .each () - избыточный в этом примере, так как .is () может использоваться непосредственно на множестве объектов, а не вручную, итерации через каждый из них. Ниже приведено более эффективное решение:

$('button').click(function () {
  var atLeastOneIsChecked = $('input:checkbox').is(':checked');
  // Do something with atLeastOneIsChecked
});

Обратите внимание, что один из комментариев указывает на сильную неприязнь к $(this).is(':checked'). Чтобы уточнить, нет ничего плохого в is(':checked') в тех случаях, когда вы тестируете набор объектов. Тем не менее, вызов is(':checked') по одному элементу намного менее эффективен, чем вызов .checked в том же элементе. Это также включает ненужный вызов функции $.

13
ответ дан Brandon Gano 3 September 2018 в 17:41
поделиться

Вы должны попробовать вот так ....

var checkboxes = $("input[type='checkbox']"),
submitButt = $("input[type='submit']");

checkboxes.click(function() {
submitButt.attr("disabled", !checkboxes.is(":checked"));

});

1
ответ дан classifieds.pkbazaar 3 September 2018 в 17:41
поделиться

is() может это сделать и, возможно, является единственным приемлемым использованием is(":checked"):

Из документов jQuery, http://api.jquery.com/ is / :

Проверьте текущий согласованный набор элементов на объект селектора, элемента или jQuery и верните true, если хотя бы один из этих элементов соответствует заданным аргументам .

alert($("input[name='service[]']").is(":checked"));

Пример: http://jsfiddle.net/AndyE/bytVX/1/ ( на основе скрипки Брэндон Гано )

В качестве альтернативы и потенциально быстрее вы можете передать функцию is():

$("input[name='service[]']").is(function () {
    return this.checked;
});
17
ответ дан Community 3 September 2018 в 17:41
поделиться

Другой ответ:

!!$("[type=checkbox]:checked").length

или

!!$("[name=service[]]:checked").length

Это зависит от того, что вы хотите.

2
ответ дан Leniel Maccaferri 3 September 2018 в 17:41
поделиться

Это должно сделать трюк:

function isOneChecked() {
    return ($('[name="service[]"]:checked').length > 0);
}
11
ответ дан pkatukam 3 September 2018 в 17:41
поделиться
var checkboxes = document.getElementsByName("service[]");
if ([].some.call(checkboxes, function () { return this.checked; })) {
  // code
}

То, что вы хотите, просто, получить все элементы с именем, а затем запустить некоторый код, если некоторые из этих элементов отмечены.

Нет необходимости в jQuery.

Возможно, для устаревших браузеров может потребоваться прокладка ES5, хотя

1
ответ дан Raynos 3 September 2018 в 17:41
поделиться

вам нужно проверить, установлен ли флажок или нет.

$("#select_all").click(function(){
           var checkboxes = $("input[type='checkbox']");
           if(checkboxes.is(":checked"))
               alert("checked");
           else
               alert("select at least one;      

            });
1
ответ дан vaibhav kulkarni 3 September 2018 в 17:41
поделиться
var atLeastOneIsChecked = $('input[name="service[]"]:checked').length > 0;
0
ответ дан Zain Khan 3 September 2018 в 17:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: