2013-08-01 39 views
-4

我假設$('thing1')document.getElementById('thing1')將返回代表<div id="thing1"></div>的節點或對象但是,如何訪問myFunc()如何訪問被調用的函數?

HTML:

<div id="thing1"></div> 

JS:

var foo = $('#thing1').myFunc(); 

var myFunc = function() { 
    console.log(this);   // I want to log $('#thing1') 
} 

我想弄清楚API的各種工作,採取highcharts例如,他們做這樣的事情:

$('#dailyKPIChart').highcharts({ 
    chart: { 
     zoomType: 'x', 
     spacingRight: 20 
    } 
}); 

圖表將載入$('#dailyKPIChart')

這是如何工作的?

+0

你創建一個jQuery插件? – ComFreek

+0

無論你想要做什麼,這段代碼都會導致錯誤。 – Mathletics

+0

'var foo = $('#thing1')。myFunc();'沒有任何意義。 myFunc沒有被定義爲$('#thing1')'的方法。你期望怎樣稱呼它? – Icarus

回答

3

沒有辦法(以編程方式)知道使用哪個變量(或哪個函數調用)來獲取調用方法的對象。

調試器會告訴你(設置一個斷點,然後查看堆棧),但如果你認爲你需要知道你的代碼中的名字,這將是沒有用的。 (在老版本的jQuery中)保存用於構造jQuery對象的選擇器,這可能對您的特定示例有所幫助。


,圖表會在$('#dailyKPIChart')

是如何運作的加載?

它並不需要了解$()'#dailyKPIChart',它只需要你打電話時,得到的對象,這是可以通過this,你的前面的示例代碼已經使用。

+2

'.selector'在1.9中被刪除(只是說) – Ian

+0

你能看到我的更新嗎? – sherlock

+0

但你怎麼aviod對象[對象對象]沒有方法'myFunc'? – sherlock

2

有幾種方法在JavaScript調用的函數,也許你call(或者其表弟apply)後:

假如你定義功能可按如下:

var myFunc = function() { 
    console.log(this);   // I want to log $('#thing1') 
} 

的同時可以調用它同時你指定context。例如,你可以這樣做:

var foo = $('#thing1'); 

var myFunc = function() { 
    console.log(this);  
} 
myFunc.apply(foo); 

或通過call:如果你有參數傳遞

var foo = $('#thing1'); 

var myFunc = function() { 
    console.log(this);  
} 
myFunc.call(foo); 

,您可以通過指定的參數列表或參數數組這樣做。例如:

var foo = $('#thing1'); 


var myFunc = function(one, two) { 
    console.log(one); 
    console.log(two); 
    console.log(this);   
} 
myFunc.apply(foo,[2,3]); 

或用電話:

myFunc.apply(foo,2,3); //foo is the calling context 

Fiddle

相關問題