我的代码语法(或者可能是选择器)有问题。请参阅demo。
我尝试了以下代码但结果什么也没做。
#1。 hasAttribute():
if ($('input[type=checkbox]').hasAttribute("disabled")) {
$(this).closest('.chkbox').addClass("is-disabled");
}
#2。是():
if ($('input[type=checkbox]').is("[disabled]")) {
$(this).closest('.chkbox').addClass("is-disabled");
}
// ------------------------------------------------
if ($('input[type=checkbox]').is(":disabled")) {
$(this).closest('.chkbox').addClass("is-disabled");
}
#3。丙():
if ($('input[type=checkbox]').prop("disabled", true)) {
$(this).closest('.chkbox').addClass("is-disabled");
}
那么我认为问题就在于:
$(this).closest('.chkbox').addClass("is-disabled");
有什么想法吗?
感谢。
答案 0 :(得分:1)
您可以使用:禁用选择器
答案 1 :(得分:0)
您在没有声明任何内容的情况下使用$(this)
。这就是它无法正常工作的原因。它适用于第二个示例,因为.change()
函数提供了“'事物”的上下文。 (这)正在改变。
此代码应该按您的意愿工作。
$(function() {
// Grab all inputs with the type checkbox.
var input = $('input[type=checkbox]')
// Check for each of the input fields (i, el stands for index, element)
input.each(function(i, el) {
// Does it have the attribute disabled?
if(el.hasAttribute('disabled')) {
// Add the class 'is-disabled'
$(el).closest('.chkbox').addClass('is-disabled')
}
})
$('input[type=checkbox]').change(function(){
if ($(this).is(":checked")) {
$(this).closest('.chkbox').addClass("is-checked");
} else {
$(this).closest('.chkbox').removeClass("is-checked");
}
});
});