如何判断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;
});
谢谢!
这听起来像是一个计时问题。 $ .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;
});
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;
});
感谢您抽出宝贵的时间,这和上面的答案让我在终点线上! – Will 2010-12-02 06:11:53
有关'live'事件的信息,请查看API:http://api.jquery.com/live/。基本上,它将侦听器分配给现在或将来匹配选择器的元素。 – 2010-11-21 04:07:47