2009-12-03 46 views
0

我已經看到完成,但我找不到一個示例了。我想要的是切換jQuery動作...下面的代碼僅僅是一個例子,它不是我正在使用的代碼,我只是想記住它是如何工作的。如何切換jQuery函數調用(更改操作)

var action = (getURL) ? "attr('href')" : "html()"; 
alert("The result is" + $('#myLink')[action]); 

我也試過

var action = (getURL) ? ".attr('href')" : ".html()"; 
alert("The result is" + $('#myLink')[action]); 

對不起我的記憶太臭,我無法找到任何這在jQuery的文檔的例子。我甚至不確定這些是否被稱爲「行動」。

回答

1

所以,你要切換函數調用?

鑑於這種方法,你可能需要兩個獨立的變量:

var action = (getURL) ? "attr" : "html"; 
var param = (getURL) ? 'href' : null; 
alert("The result is" + $('#myLink')[action](param)); 

但是,爲什麼不象正常使用if語句?

if (getURL) 
    alert("The result is" + $('#myLink').attr('href')); 
else 
    alert("The result is" + $('#myLink').html()); 
+0

謝謝,這正是我想要得到的......函數調用,大聲笑確定我將編輯標題:P – Mottie 2009-12-03 23:30:32

1

有沒有理由不想這麼做?

var result = ''; 
if (getURL) { 
    result = $('#myLink').attr('href'); 
} else { 
    result = $('#myLink').html(); 
} 
alert("The result is " + result); 

或者怎麼樣:

var result = getURL ? $('#myLink').attr('href') : $('#myLink').html(); 
alert("The result is " + result); 
+0

嗯,我正在研究一個jQuery插件。而且我希望用戶能夠告訴腳本從哪裏獲取某些數據,可以從元素的屬性或標籤中獲取。這可能不是最好的方式,但我正在修補和學習。 – Mottie 2009-12-03 23:29:48

0

你可以這樣做:

alert("The result is" + ((getURL) ? $('#myLink').attr('href') : $('#myLink').html())); 
1

調用函數時,你不會知道的參數列表,直到運行時是使用apply()的方式。

var action = getUrl ? "attr" : "html"; 
var params = getUrl ? ['href'], []; 

var $e = $('#myLink'); 
$e[action].apply($e.get(0), params); 

的第一個參數是apply這將成爲this該函數內的對象。

+0

有趣的是,我不知道你可以做到這一點 – Mottie 2009-12-03 23:27:50