【问题标题】:JavaScript function arguments in jQueryjQuery 中的 JavaScript 函数参数
【发布时间】:2009-02-10 11:11:38
【问题描述】:

我正在使用 jQuery 和 JavaScript。我有一个调用 JavaScript 函数的 onclick 事件。如何在jQuery中提取function_A和function_B的参数?

这是最好的方法吗?

我需要在单击 JavaScript 后进行 Ajax 调用。使用 jQuery 是否存在性能问题?

我的代码:

<html>
    <head>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script>
            $(document).ready(function(){
                //Here need to extract the JavaScript function arguments
                var id1=from_javascript_function_A
                var id2=from_javascript_function_B

                var link1=from_javascript_function_A
                var link2=from_javascript_function_B
                //
        </script>
    </head>
    <body>
        <a href='#' onclick=javascript:function_A('first',1)>link1</a>
        <a href='#' onclick=javascript:function_B('second',2)>link2</a>
    </body>
</html>

【问题讨论】:

    标签: php javascript jquery ajax events


    【解决方案1】:

    这样的事情呢?

    <script>
            $(document).ready(function(){
                $("a.a").click(function(e){
                    DoWork('a',1,function_a);
                });
                $("a.b").click(function(e){
                    DoWork('b',2,function_b);
                });
            });
    
            function DoWork(s,i,f){
                f(s,i);
                alert("after click:" + s + " " + i);
            }
    
            function function_a(s,i){
                alert("a:" + s + " " + i);
            }
            function function_b(s,i){
                alert("b:" + s + " " + i);
            }
    
        </script>
    
    </head>
    <body>
    
        <a href="#" class="a">a</a>
        <a href="#" class="b">b</a>
    </body>
    

    【讨论】:

      【解决方案2】:

      如果你真的想从函数调用中提取参数,你需要做一堆手动解析,例如,

      $("a").each(function(){
        var onclicktext = $(this).attr("onclick");
        if(onclicktext.indexOf("function_A") > -1){
          // Do more parsing here
        }
        if(onclicktext.indexOf("function_B") > -1){
          // Do more parsing here
        }  
      });
      

      【讨论】:

        【解决方案3】:

        函数参数仅在该函数中可见。通常它们是变量,它们的值仅在调用函数时才有意义(在您的示例中,当单击相应的链接时)。在$(document).ready 中,它们的值不相关。

        如果参数不是变量,它们是已知的,你也不会问这个问题。

        【讨论】:

          【解决方案4】:

          如果您无法编辑 HTML 代码,那么您所能做的就是一些丑陋的 hack:

          $("a").each(function(){
            fnStr = ($(this).attr('onclick')).toString();
            re = /\"[^\"]+\"/
            alert(re.exec(fnStr));
            re = /\'[^\"]+\'/
            alert(re.exec(fnStr));
          });
          

          以上代码使用regular expressions获取引号之间的参数。自己试试;不同的浏览器可能有不同的行为。

          【讨论】:

            猜你喜欢
            • 2015-11-12
            • 2016-07-09
            • 2012-03-06
            • 2011-04-16
            • 2014-10-18
            • 1970-01-01
            • 1970-01-01
            • 2020-01-20
            • 1970-01-01
            相关资源
            最近更新 更多