jquery
  • checkbox
  • attr
  • 2017-08-17 245 views 0 likes 
    0

    我试图禁止使用jQuery禁用复选框的jQuery

    增加一个新的课程来指示如果学生为了填补已经反复过程中的复选框是动态创建的GPA计算器应用程序复选框元素他以前在这等级:

    if(hourSum < 21){ 
         $("<div class='course'>" 
             + "<div class='tdnum'>" 
             + "<span class='subNum' id='subNum" + i + "'>" + i + " </span>" 
             + "</div>" 
             + "<div class='tdgrade'>" 
             + "<span class='requiredMsg' id='markReq" + i + "'>*</span>" 
             + "<input type='number' class='mark'>" 
             + "<span class='errorMessage' id='markError" + i + "'>* between 35 - 100</span>" 
             + "</div>" 
             + "<div class='tdhour'>" 
             + "<span class='requiredMsg' id='shourReq" + i + "'>*</span>" 
             + "<input type='number' class='shour'>" 
             + "<span class='errorMessage' id='shourError" + i + "'>* between 1 - 3</span>" 
             + "</div>" 
             + "<div class='tdrep'>" 
             + "<input id='subState" + i + "' class='repSub' type='checkbox'>" 
             + "</div>" 
             + "<div class='tdpgrade'>" 
             + "<input type='number' class='rmark' id='rmark" + i + "' disabled>" 
             + "<span class='errorMessage' id='rmarkError" + i + "'>* between 35 - 100</span>" 
             + "</div>" 
             + "<div class='tddelete'>" 
             + "<span class='remove'><img src='img/delete.png'></span>" 
             + "</div>" 
            + "</div>").appendTo(".ctable").hide().fadeIn(300); // add fade effect on adding elements   
          i++; 
        } 
    

    我需要禁用.repSub类此复选框时传递小时数= 0,整体平均= 0

    "<input id='subState" + i + "' class='repSub' type='checkbox'>" 
    

    这个方法我试过:

    $(".repSub").prop("disabled", true); 
    

    也是我想:

    $(".repSub").attr("disabled", 'disabled'); 
    

    但是这两种方法都没有工作在动态创建的复选框

    是有这个问题的任何解决方案的工作?

    +0

    你在哪里和什么时候使用上述方法/ – Satpal

    +0

    你在哪里放这一行:'$(“。repSub”)。prop(“disabled”,true);'?它应该在追加html之后。 –

    +2

    为什么不在追加元素时添加禁用功能? –

    回答

    1

    使用一个回调函数来执行代码实际上元素是动态DOM的,这就是为什么当你添加
    $(“repSub‘)的代码不工作负载托(’已禁用”,真)。 或 $(“。repSub”)。attr(“disabled”,'disabled');

    下面是示例代码我写到这里, 只是做出一些改变在这里

    "+ </div>)".appendTo(".ctable").hide().fadeIn(300,function(){ 
    $(".repSub").prop("disabled", true); 
    }); 
    

    我只是用淡入回调函数,所以它会在ELEM之后八方通工作淡入

    如果请通知我这是工作与否

    如果它不工作,你可以使用Promise()或done()方法做这些东西 这里是范例

    var str = "<div id='xx'>Some content</div>"; 
    $(str).appendTo("#qo").promise().done(function(){ 
    $("#xx").html("Change the content"); 
    $("#xx").prop("disabled", true); 
    }); 
    

    “qo”是一个div id,并且我将#xx div动态添加,然后在加载内容之后,我更改了一些内容并禁用了该元素。

    请评论。

    +0

    非常感谢。第二种方式'.promise()。done()'方法为我工作。 我添加了我的解决方案的问题。 – Oghli

    0

    我发现罚款解决问题的方法测试比方式

    仅这是为我工作的方式更后Ankur Das方法,他在他的回答中提到

    我以前.promise().done(function(){})方法与回调函数附加后被动态地添加的元素:

    +"</div>").appendTo(".ctable").hide().fadeIn(300).promise().done(function(){ 
            hour = Number($("#hrs").val()); 
            avg = Number($("#avg").val()); 
            if (hour === 0 && avg === 0) { 
            $(".repSub").prop("disabled", true); 
            } 
            else { 
            $(".repSub").prop("disabled", false); 
            } 
          }); 
    

    了问题解现场演示: https://jsfiddle.net/e9ubveL2/10/

    相关问题