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