【问题标题】:How to call textual function in javascript / jQuery?如何在 javascript / jQuery 中调用文本函数?
【发布时间】:2010-10-11 13:00:29
【问题描述】:

例如:

<input id="#me" type="button" callme="doAction()"/>
    
<script>
     var result = callFunction( $("#me").attr('callme') );       /// ?????????
</script>

【问题讨论】:

  • 你的 callFunction 是做什么的?您希望传递一个字符串吗?
  • 你到底想完成什么?

标签: php javascript jquery json function


【解决方案1】:

试试这个:

<script>
    var callMe = $("#me").attr("callme");
    var result = eval(callMe);
</script>

【讨论】:

    【解决方案2】:

    更好的解决方案是不在您的 HTML 标记中包含该函数。将标记与脚本分开几乎总是更好。

    而是考虑使用

    将其添加到您的 dom 对象中
    $('#me').data('callme', function(){...});
    

    $('#me').data('callme', doAction);
    

    并使用

    调用它
    $('#me').data('callme')()
    

    或者更安全一点

    ($('#me').data('callme')||jQuery.noop)()
    

    有关数据函数的更多详细信息,请参阅 jQuery documentation

    【讨论】:

    • 我得到这个错误:(f||jQuery.noop)(); f 不是函数??函数存在...
    • jQuery.noop() 在 jQuery 1.4+ 版本中
    • 如果需要,jQuery.noop 可以替换为 function(){},或者您可以使用 jQuery.noop = function(){}; 自行分配它
    【解决方案3】:

    如果属性callme 是函数的名称(标识符),只需使用

    <input id="#me" type="button" callme="doAction"/>
    
    (window[$("#me").attr('callme')] || function() {})();
    

    这样您就可以避免使用昂贵的eval()

    【讨论】:

    • 我喜欢这个但是,我得到这个错误:(f)(); f 不是函数??函数存在...
    • 糟糕,抱歉。试试这个 (window[$("#me").attr('callme')] || function() {})();
    【解决方案4】:

    我想也许这就是解决方案:

    <script>
    setTimeout( $("#me").attr('callme'), 0 );
    </script>
    

    但是如何获取返回值呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      相关资源
      最近更新 更多