在动态创建的元素上禁用复选框 jQuery
Disable checkbox on dynamically created elements 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++;
}
当经过的小时数 = 0 且总体平均值 = 0
时,我需要禁用 class .repSub
的复选框
"<input id='subState" + i + "' class='repSub' type='checkbox'>"
我试过这个方法:
$(".repSub").prop("disabled", true);
我也试过:
$(".repSub").attr("disabled", 'disabled');
但这两种方法都不适用于动态创建的复选框
这个问题有什么可行的解决方案吗?
使用回调函数执行代码,实际上元素是动态加载的 dom 这就是为什么在您添加
时代码不起作用的原因
$(".repSub").prop("disabled", 真);
要么
$(".repSub").attr("disabled", 'disabled');
这是我在这里写的示例代码,
在这里做一些改变
"+ </div>)".appendTo(".ctable").hide().fadeIn(300,function(){
$(".repSub").prop("disabled", true);
});
我只使用 fadeIn 回调函数,所以它会在 elem fadeIn 之后一直有效
请通知我这是否有效
如果它不起作用,您可以使用 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,然后在加载内容后我更改了一些内容并禁用了该元素。
请评论。
经过多次测试,我找到了很好的解决问题的办法
唯一对我有用的方法是他在回答中提到的方法
我在追加动态添加的元素后使用了带有回调函数的.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/
我正在尝试使用 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++;
}
当经过的小时数 = 0 且总体平均值 = 0
时,我需要禁用 class.repSub
的复选框
"<input id='subState" + i + "' class='repSub' type='checkbox'>"
我试过这个方法:
$(".repSub").prop("disabled", true);
我也试过:
$(".repSub").attr("disabled", 'disabled');
但这两种方法都不适用于动态创建的复选框
这个问题有什么可行的解决方案吗?
使用回调函数执行代码,实际上元素是动态加载的 dom 这就是为什么在您添加
时代码不起作用的原因
$(".repSub").prop("disabled", 真);
要么
$(".repSub").attr("disabled", 'disabled');
这是我在这里写的示例代码, 在这里做一些改变
"+ </div>)".appendTo(".ctable").hide().fadeIn(300,function(){
$(".repSub").prop("disabled", true);
});
我只使用 fadeIn 回调函数,所以它会在 elem fadeIn 之后一直有效
请通知我这是否有效
如果它不起作用,您可以使用 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,然后在加载内容后我更改了一些内容并禁用了该元素。
请评论。
经过多次测试,我找到了很好的解决问题的办法
唯一对我有用的方法是
我在追加动态添加的元素后使用了带有回调函数的.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/