2012-04-01 214 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