Аргументы функции JavaScript в jQuery - PullRequest
0 голосов
/ 10 февраля 2009

Я использую jQuery и JavaScript. У меня есть событие onclick, которое вызывает функцию JavaScript. Как извлечь аргументы function_A и function_B в jQuery?

И это лучший способ сделать это?

Мне нужно сделать Ajax-вызов после JavaScript-клика. Есть ли проблемы с производительностью при использовании 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>

Ответы [ 4 ]

3 голосов
/ 10 февраля 2009

Как насчет этого?

<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>
0 голосов
/ 10 февраля 2009

Аргументы функции должны быть видны только внутри этой функции. Обычно они являются переменными, и их значения будут иметь значение только в тот момент, когда функция вызывается (в вашем примере, когда нажата соответствующая ссылка). В пределах $(document).ready их значение не имеет значения.

Если аргументы не являются переменными, они известны, и вы все равно не зададите этот вопрос.

0 голосов
/ 10 февраля 2009

Если вы не можете отредактировать код HTML , тогда все, что вы можете сделать, это несколько уродливых хаков:

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

Приведенный выше код использует регулярные выражения для получения параметров между кавычками. Попробуй сам; разные браузеры могут иметь разное поведение.

0 голосов
/ 10 февраля 2009

Если вы действительно хотите извлечь параметры из вызовов функций, вам нужно выполнить кучу ручного анализа, например,

$("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
  }  
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...