我做了简单的ajax调用。 e =我点击的元素
<div class="row">
<div class="order_notes">
<div class="order_note add">
<div class="input"><input type="text" value="" /></div>
<div onclick="someFunction(e)">click it</div>
</div>
<div class="order_note">note</div>
</div>
</div>
这个结构加载了ajax,我希望在ajax之后再次关注输入文本
function someFunction(e){
jQuery.ajax({
type: "POST",
url: "/templates/design/inc/al_ajax.php",
data: { action : 'add_note', order_number: o_num, commentar: com, user_id: user_id},
beforeSend: function(data){
},
success: function(data){
e.closest(".row").find(".order_notes").html(data);
console.log(e.closest(".row").find(".order_notes .add input").length);
e.closest(".row").find(".order_notes .add input").focus();
}
});
}
console.log返回1,因此该元素存在于问题所在的位置。数据是正确的,它正确地改变了order_notes 包括输入的所有内容,所以我需要关注加载的输入
PS:结构更复杂我只是将其简化为例如
答案 0 :(得分:0)
看看你的控制台。您可能收到以下错误消息:
Uncaught ReferenceError: e is not defined
对于onclick
属性,请使用this
代替e
。
<div onclick="someFunction(this)">click it</div>
此外,在success
回调函数中,e
将是一个DOM对象,而不是一个jQuery对象;因此它将无法使用.closest()
。
您需要将e
转换为jQuery对象,如下所示:
$(e)
答案 1 :(得分:0)
所以我无法设置焦点的原因是.closest在ajax加载之后没有在给定的e元素上正常工作所以在我进行ajax调用之前我放入r变量父行
var r = e.closest(".row");
然后我在寻找r
中的元素r.find(".order_notes .add input").focus();
而不是
e.closest(".row").find(".order_notes .add input").focus()