我正在尝试添加一个类来动态添加的输入元素。
$(function(){
//the elements that are added dynamically.
$('#addItem').click(function(){
var form = "<tr id='"+i+"'><td>Quantity</td>
<td><input class='qty quan total chk'
type='text' id='qty["+i+"]'
name='qty["+i+"]'>
</td>";
});
//when user click submitThis button, this checks for blanks
$(document).on('click','#submitThis',function(){
var error = 0;
$(".chk").each(function(){
var id = $(this).attr('id');
if ($(this).val().length < 1){
$('#'+id).addClass('error');
error++;
}
});
});
我猜这似乎失败了,因为 var id 包含括号并且出现所有错误。输入需要是用于表单发布的数组,因为它可能是大量输入,并且在处理方面要容易得多。我知道元素已正确添加,并且我正在正确监听,因为如果我在 addClass 之后发出警报,如果我添加一些数据,我会看到输入的值,所以对我来说,为什么不添加该类没有什么意义。该类被添加到其他非动态添加的字段中。我知道 if 语句返回 true。
最佳答案
您已经拥有要尝试选择的元素 (this
),只需使用它即可。
$(this).addClass('error');
或者你可以转义括号
$('#'+id.replace('[','\\[').replace(']','\\]')).addClass('error');
关于javascript - 当括号中的变量值破坏我的 addClass 时,jquery 是转义括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28229041/