Как переключить вызов функции jQuery (изменить действие) - PullRequest
0 голосов
/ 04 декабря 2009

Я видел, как это сделано, но я больше не могу найти пример. Я хотел бы переключить действие 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 ]

1 голос
/ 04 декабря 2009

Способ вызова функции, когда вы не знаете список параметров до времени выполнения, - apply().

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

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

Первый параметр apply - это объект, который станет this внутри функции.

1 голос
/ 04 декабря 2009

То есть вы хотите переключить вызов функции?

При таком подходе вам, вероятно, понадобятся две отдельные переменные:

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());
1 голос
/ 04 декабря 2009

Есть ли причина, по которой вы не хотите этого делать?

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 голосов
/ 04 декабря 2009

Вы можете сделать это:

alert( "The result is" + ((getURL) ? $('#myLink').attr('href') : $('#myLink').html()) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...