繁体   English   中英

jQuery中的JavaScript函数参数

[英]JavaScript function arguments in jQuery

我正在使用jQuery和JavaScript。 我有一个onclick事件,该事件调用JavaScript函数。 如何在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>

那这样的东西呢?

<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>

如果您确实要从函数调用中提取参数,则需要进行大量手动解析,例如,

$("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
  }  
});

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

如果参数不是变量,则它们是已知的,无论如何您都不会问这个问题。

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

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

上面的代码使用正则表达式来获取引号之间的参数。 自己尝试; 不同的浏览器可能具有不同的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM