2014-08-27 110 views
0

我已经做了简单的ajax调用。 E =元件在其上我点击jQuery焦点不能集中于ajax加载的元素

<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:在strucutre比较复杂,我只是简化它例如

+2

定义是什么'e'里面?你能看到数据吗? – 2014-08-27 12:33:10

回答

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) 

演示:http://jsfiddle.net/y6zq55kq/

+0

你在开玩笑吧? 1.没有错误原因e总是定义导致元素e被加载也为 2.为什么(这个)然后jQuery(e)jQuery(this)做了同样的事情并且它更短了 3.现在你可能是对的了,这个可能是问题 – user3175393 2014-08-27 13:12:49

0

,所以我为什么我不能设置焦点是.closest是n要的原因在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()