2014-08-27 68 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()