Невозможно установить флажок, снимите флажок с помощью jquery в теме администратора metronic

Я использую тему администратора metronic для одного из моих проектов.

http://themeforest.net/item/metronic-responsive-admin-dashboard-template/4021469

Мне нужно установить или снять флажки на основе данных из базы данных, но проблема в том, что я не могу установить или снять флажок в теме метроник с помощью jquery. Я пробовал оба способа выполнить эту задачу, используя prop и attr, но у меня ничего не работает. Если я запускаю тот же код на своей пользовательской веб-странице, он работает отлично.

$("#checkbox").prop("checked",true);
$("#checkbox").attr('checked',false);
$("#checkbox").attr('checked','checked');

person Asad    schedule 17.05.2016    source источник
comment
Некоторое время местоположение вашего кода имеет значение. Возможно, вы размещаете этот фрагмент кода не в том месте. Вы можете показать полный фрагмент кода?   -  person Atif    schedule 17.05.2016
comment
на моей пользовательской веб-странице все работает, чем отличается та страница от той, на которой она не работает? В консоли есть ошибки? Является ли флажок пользовательским элементом, который обертывает фактический элемент флажка <input>, например, элемент Polymer?   -  person Patrick Evans    schedule 17.05.2016


Ответы (4)


Если вы используете метроник, попробуйте добавить эту строку после реквизита:

$.uniform.update();

Тема Metronic использует универсальную библиотеку для преобразования стандартного элемента формы в причудливый элемент. Если вы устанавливаете или снимаете флажок с элемента с помощью jquery, он обновляется, но не отражается на внешнем интерфейсе. Чтобы обновить это действие во внешнем интерфейсе, вам необходимо обновить с помощью юниформ-библиотеки.

$.uniform.update() изменяет стиль элемента в зависимости от обновленного действия.

person vartika    schedule 17.05.2016
comment
@user2940935 user2940935, если ваша проблема решена, примите ответ. - person vartika; 17.05.2016
comment
Вы должны добавить описание того, почему это необходимо. Попробуйте, что ответы только учат пользователей копировать код вставки без понимания основной причины и решения. - person Patrick Evans; 18.05.2016
comment
Проблема возникла из-за асинхронного вызова. $.uniform.update(); был вызван метроник до завершения моего вызова ajax. На самом деле, когда вы вызываете $.uniform.update(), он просто изменяет стиль тех элементов, которые уже были собраны. - person Asad; 26.05.2016
comment
Большое спасибо за это. Я боролся с этой проблемой несколько часов, а потом подумал, не связано ли это с Метроником. Спасибо еще раз. Я должен тебе пиво. - person AnotherOther; 21.10.2016
comment
Большое спасибо. Вы нам очень помогли! :) - person Hannah May; 26.02.2020

Лучший способ решить эту проблему — добавить класс для флажка ввода, когда вы используете цикл Angular Js.

Это отлично работает:

это работает отлично

person Yusif Karimov    schedule 05.09.2019
comment
Привет, добро пожаловать в Stackoverflow. Поместите код в свой ответ, предоставив скриншот, его будет легче скопировать и вставить - person bagerard; 05.09.2019
comment
Эта проблема не связана с селектором, селектор JQuery работал нормально, и в действительности флажок был установлен, но в графическом интерфейсе его статус не изменился, поскольку тема Metronic использует универсальную библиотеку для преобразования стандартного элемента формы в причудливый элемент. - person Asad; 05.09.2019

Я также использую метроическую тему, но таких проблем нет: я думаю, проблема может быть в том, что ваши «непроверено» и «проверено» не совпадают; я имею в виду: вы должны

var checked = $(this).is(":checked");
$.each(function() {
  if (checked) {
     $(this).prop("checked", true);//or $(this).attr("checked", true);
  } else {
     $(this).prop("checked", false);//or $(this).attr("checked", false),can't use $(this).removeAttr('checked');
  }
});

если вы используете removeAttr, вы должны

$(this).attr('checked', 'checked');
$(this).removeAttr('checked');

если, прежде всего, это не работает, вы можете попробовать:

$(this)[0].checked=true;// when I use ,find return array,so add [0];
$(this)[0].checked=false;
person Anan    schedule 17.05.2016
comment
Спасибо, в теме Metron $.uniform.update(); требовалось после проверки или снятия отметки для обновления пользовательского интерфейса. - person Asad; 17.05.2016

$(this).iCheck('uncheck');

or

$(this).iCheck('check');

можно найти здесь

person Du Nguyễn Phan    schedule 13.12.2016