如何切换jQuery函数调用(更改操作)

时间:2009-12-03 23:02:13

标签: jquery function

我已经看到了这一点,但我再也找不到一个例子了。我想要的是切换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文档中找到这样的例子。我甚至不确定这些是否被称为“行动”。

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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());

答案 2 :(得分:1)

在运行时间之前不知道参数列表时调用函数的方法是使用apply()

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

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

apply的第一个参数是函数内将成为this的对象。

答案 3 :(得分:0)

你可以这样做:

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