JavaScript - 如果禁用复选框,则使用jQuery添加类

时间:2016-08-25 08:51:54

标签: javascript jquery

我的代码语法(或者可能是选择器)有问题。请参阅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");

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用:禁用选择器

see here

答案 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");
    }
  });
});