JQuery проверки и снятия флажков
Я должен проверить и снять флажки. Но это не работает хорошо.
Пример: когда статус активен на 1-й загрузке:
- Снятие флажков в неактивных (работает нормально)
- Повторная проверка, чтобы сделать его активным (не работает, остается без галочки)
Пример: когда статус неактивен при первой загрузке:
- Флажки в активном (работает нормально)
- Снятие флажков в неактивных (работает нормально)
- Повторная проверка, чтобы сделать его активным (не работает, остается без галочки)
Вот мой пример кода:
var statusCheck = $('.status-box');
$.ajax({
url: 'sample/url',
type: 'POST',
data: {
user_id: ids,
status: statusVal
},
success: function (response) {
if (response == 'ok') {
$.each(statusCheck, function () {
var _this = $(this);
if (_this.is(':checked')) {
_this.removeAttr('checked');
} else {
_this.attr('checked', '');
}
});
}
}
});
2 ответа
У меня были проблемы (странные аномалии) с установкой и снятием флажков в JQuery. Я использовал .attr
а также .removeAttr
и когда я изменил его на .prop('checked',false/true)
Я решил проблему.
До версии jQuery 1.6 метод.attr() иногда учитывал значения свойств при извлечении некоторых атрибутов, что могло вызвать противоречивое поведение. Начиная с jQuery 1.6, метод.prop() предоставляет способ явного получения значений свойств, в то время как.attr() возвращает атрибуты. Ссылка:
Обратите внимание, что вы должны использовать JQuery 1.6 +
,
var statusCheck = $('.status-box')
$.ajax({
url : 'sample/url',
type : 'POST',
data : { user_id: ids, status: statusVal },
success : function( response ) {
if( response == 'ok' ) {
$.each(statusCheck, function(){
var _this = $(this);
if( _this.is(':checked') ) {
_this.removeAttr('checked');
} else {
_this.attr('checked', 'checked');
// ...............^ here ^
}
});
}
}
});
Попробуй это: _this.attr('checked', 'checked');
Также .prop()
из этой ссылки может творить чудеса;)