2012-04-01 162 views
0

是的我知道,這個標題並不真正有用,但這確實是個問題。出於某種原因(我不知道),我不能操縱我的AJAX請求函數的之前發送函數。DOM操作不起作用

這是HTML:

<div class="right"> 
    <span id="observer-eye" original-title="Observe this Summoner" data-id="2"> 
     <img alt="" src="/lolreports/img/icons/observer_eye.png"> 
    </span> 
</div> 

這是AJAX請求:

$.ajax({ 
    type: 'post', 
    dataType: 'json', 
    url: webroot + 'summoners/observe', 
    data: 'data[Summoner][id]=' + id, 
    beforeSend: function(XMLHttpRequest) { 
     $(this).parent().empty(); 
    }, 
    success: function(data) { 
     if(data.status == 'success') { 
      $(this).find('img').attr("src", webroot + 'img/icons/observed_eye.png"'); 
     } 
    } 
}); 

我的目標是把一個Ajax-loader.gif這是我想了-Tag內使用$(this).find('img')。attr(「src」,webroot +'img/icons/ajax-loader.gif''); - 沒有任何事情發生,我測試了許多方法來操縱圖像或跨度,但沒有任何反應,我想知道beforeSend得到執行,我測試了警報()。有效。但沒有DOM操作。

我不知道在哪裏搜索,我希望你能幫助我。

+7

'$(這)'指的不是你的想法。用console.log(this)檢查它;' – zerkms 2012-04-01 22:58:18

+0

什麼觸發了這個AJAX調用?你可以放? – Joseph 2012-04-01 23:04:43

回答

0

請勿使用$(this),因爲它無法正確引用您的目標元素。當然也有很多方法可以做到這一點,試試這個

$("#observer-eye").find('img').attr("src", webroot + 'img/icons/observed_eye.png"'); 

對於beforesend,不使用$(this),在`beforeSend`處理程序做到這一點,而不是

$('the-intended-selector').parent.empty() 
+0

我應該通過myslef找到這個:P但是,謝謝,這就是解決方案! – Fortuna 2012-04-02 00:49:54