代码之家  ›  专栏  ›  技术社区  ›  Mottie

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

  •  0
  • Mottie  · 技术社区  · 16 年前

    我已经看过了,但是我再也找不到一个例子了。我想要的是切换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 回复  |  直到 16 年前
        1
  •  1
  •   TM. Randy Simon    16 年前

    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);
    
        2
  •  1
  •   Joel    16 年前

    你想切换函数调用吗?

    考虑到这种方法,您可能需要两个独立的变量:

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

    if (getURL)
        alert("The result is" + $('#myLink').attr('href'));
    else
        alert("The result is" + $('#myLink').html());
    
        3
  •  1
  •   nickf    16 年前

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

    var action = getUrl ? "attr" : "html";
    var params = getUrl ? ['href'], [];
    
    var $e = $('#myLink');
    $e[action].apply($e.get(0), params);
    

    要删除的第一个参数 apply 是将要成为的对象 this

        4
  •  0
  •   Gumbo    16 年前

    您可以这样做:

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