【问题标题】:If...then function for button pressIf...then 按钮按下的功能
【发布时间】:2013-09-06 18:29:47
【问题描述】:

我将如何为这段代码执行 if...then 语句?

  $('body').on('click', '.icon-lock', function () {
        var lockedarea = $(this).parents(0).eq(2);
    $(lockedarea).find('input[type=text],input[type=checkbox],textarea,select').prop('disabled', true);
  });

现在当我点击它时,只要这些输入变得不可编辑,我想要发生的事情就会发生。但是我想说的是,如果按下此按钮,就会发生这种情况。如果再次按下它,则 .prop('disabled', false)。不过我刚开始,做这种事很容易搞糊涂。

【问题讨论】:

  • HTML 是什么样的?

标签: javascript jquery dom if-statement input


【解决方案1】:

您需要跟踪是否要在某种变量中禁用它。试试这个:

var disable = true;
$('body').on('click', '.icon-lock', function () {
    var lockedarea = $(this).parents(0).eq(2);
    $(lockedarea).find('input[type=text],input[type=checkbox],textarea,select').prop('disabled', disable);
    disable = !disable;
});

【讨论】:

  • 比我的更漂亮)
  • 哇!做到了。现在...有没有更聪明(速记)的方式让我写这个,或者这样好吗?
【解决方案2】:

使用一些flag:

var isDisabled = false;
$('body').on('click', '.icon-lock', function () {
    var lockedarea$ = $(this).parents(0).eq(2),
        inputs$ = lockedarea$.find('input[type=text],input[type=checkbox],textarea,select');
    if ( isDisabled ) {
        isDisabled = false;
        inputs$.prop('disabled', false);
    } else {
        isDisabled = true;
        inputs$..prop('disabled', true);
    }
});

【讨论】:

    【解决方案3】:

    只需将您当前的 .prop 替换为:

    .prop('disabled', function (_, val) { return ! val; });
    

    【讨论】:

    • 这很好用。而且它似乎没有 @Colin DeClue 解决方案中存在的切换错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多