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