当括号的变量值破坏我的addClass时,jquery是转义括号

时间:2015-01-30 04:02:06

标签: javascript jquery

我正在尝试添加一个类来动态添加输入元素。

   $(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包含括号并且得到了所有的bug。输入需要是表格帖子的数组,因为它可能是大量的输入,并且在处理方面更容易。我知道元素被正确添加并且我正在正确地听,因为如果我在addClass之后做一个警报我看到输入的值如果我添加一些数据,所以这对我来说没有意义为什么没有添加类。该类将添加到未动态添加的其他字段中。我知道if语句返回true。

1 个答案:

答案 0 :(得分:1)

您已经拥有了您尝试选择的元素(this),只需使用它。

$(this).addClass('error');

交替你可以转义括号

$('#'+id.replace('[','\\[').replace(']','\\]')).addClass('error');