2012-02-14 25 views
0

我有這樣的:

jQuery.ajaxSetup({ 
    async:false, 
    dataType: 'json', 
    beforeSend: function(){ 
     $(this).next('.ajaxLoader').show(); 
     console.log($(this)); 
    }, 
    complete: function(){ 
     $(this).next('.ajaxLoader').hide(); 
    } 
}); 

但問題是,$(this)點在beforeSend「身體」和它指向的jQuery對象的完整功能。我需要函數的$(this)來引用當前正在使用的點擊處理程序。

編輯:找到正確答案!

jquery ajax - global settings. Is it possible to know what event/element trigger the ajax call?

+0

@FelixKling這是非常不同的答案。 – benhowdle89 2012-02-14 16:23:27

+2

@FelixKling。你怎麼記得? – gdoron 2012-02-14 16:25:53

+0

啊......對不起。我現在看到你使用'ajaxSetup'。所以這確實是不同的,沒關係。 – 2012-02-14 16:26:22

回答

0

更新基於jquery ajax - global settings. Is it possible to know what event/element trigger the ajax call?

var $this; 
jQuery.ajaxSetup({ 
    async:false, 
    dataType: 'json', 
    beforeSend: function(jqXHR, settings){ 
     $this = settings.context.element; 
     $this.next('.ajaxLoader').show(); 
     console.log($this); 
    }, 
    complete: function(){ 
     $this.next('.ajaxLoader').hide(); 
    } 
}); 
+0

'this'需要引用click事件的目標,而不是ajax設置的上下文。 – ori 2012-02-14 16:50:58

+0

感謝兄弟指出這一點..因爲OP得到了問題解決..我已根據給定的參考更新了答案。 – 2012-02-14 17:59:39