2009-12-03 73 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