如何判断jquery附加表格行

问题描述:

嗨,我已经有了一个可以通过ajax添加一行项目的表单。但是,当添加此行时,新输入无法获得焦点。如何判断jquery附加表格行

在试图解决这个问题时,我发现如果在绑定函数期间触发警报,他们确实会收到焦点。

我看了看周围的答案,但我不能得到它的工作。我认为“生活”功能可能是相关的,但我真的不知道如何使用它。

这是我的代码。

$("#doogal").bind("click", function (event) { 
    $.ajax({data:$("#doogal").closest("form").serialize(), dataType:"html", success:function (data, textStatus) {$("#saleitems").append(data);}, type:"get", url:"\/saleitems\/add\/" + $rows}); 
    $rows = $rows + 1; 
// alert("uncomment this to enable focus"); 
    $("#autoComplete_1").focus();  
    return false; 

}); 

谢谢!

+0

有关'live'事件的信息,请查看API:http://api.jquery.com/live/。基本上,它将侦听器分配给现在或将来匹配选择器的元素。 – 2010-11-21 04:07:47

这听起来像是一个计时问题。 $ .ajax是一个异步调用。当警告注释掉时,对.focus()的调用发生在ajax调用完成之前和成功函数被调用并添加新输入之前。当您添加警报时,会延迟.focus()调用足够长的时间,以致完成ajax调用。

把.focus()在成功的功能(也可能是$行增量也)调用,这样它只能运行后Ajax调用完成:

$("#doogal").bind("click", function (event) { 
    $.ajax({data:$("#doogal").closest("form").serialize(), dataType:"html", success:function (data, textStatus) { 
     $("#saleitems").append(data); 
     $rows = $rows + 1; 
     $("#autoComplete_1").focus();  
    }, type:"get", url:"\/saleitems\/add\/" + $rows}); 
    return false; 
}); 
+0

omg。有效。谢谢Erv! – Will 2010-12-02 06:10:50

先给焦点的回调中功能。由于您使用的是本质上是异步的AJAX,因此您必须等待数据加载完成。

$("#doogal").bind("click", function (event) { 
    $.ajax({data:$("#doogal").closest("form").serialize(), 
     dataType:"html", 
     success:function (data, textStatus) { 
      $("#saleitems").append(data); 

      $rows = $rows + 1; 
      $("#autoComplete_1").focus(); 
     }, 
     type:"get", 
     url:"\/saleitems\/add\/" + $rows 
    }); 

    return false; 

}); 
+0

感谢您抽出宝贵的时间,这和上面的答案让我在终点线上! – Will 2010-12-02 06:11:53