【问题标题】:JQuery pass a variable from function to functionJQuery 在函数之间传递一个变量
【发布时间】:2023-03-17 23:56:01
【问题描述】:

我有一个通过 .click 函数检索的变量,我想将它传递给另一个函数,但我无法正确传递它,因为当我调用另一个函数时没有任何反应。

var className;
var flavor;
(function ($) {

  Drupal.myTest = Drupal.myTest|| {};

  Drupal.behaviors.myTest= {

    attach: function (context, settings) {

          Drupal.myTest.myFunction= function (className) {
            var passedVar= className;
            alert(passedVar);
          };



          $('.buttons').on('click', function(event) {
            className = $(this).attr('class');
          });

          $('#test').on('click, function(event) {
        Drupal.myTest.myFunction();
          });

    }

  };

}(jQuery));

【问题讨论】:

    标签: jquery function parameter-passing


    【解决方案1】:

    试试

    (function ($) {
        var className;
        var flavor;
    
        Drupal.myTest = Drupal.myTest|| {};
    
        Drupal.behaviors.myTest = {
            attach: function (context, settings) {
                Drupal.myTest.myFunction= function (className) {
                    var passedVar= className;
                    alert(passedVar);
                };
    
                $('.buttons').on('click', function(event) {
                    className = $(this).attr('class');
                });
    
                $('#test').on('click', function(event) {
                    Drupal.myTest.myFunction(className);
                });
            }
        };
    
    }(jQuery));
    

    【讨论】:

    • 这似乎不起作用。您能否查看我对上面问题的编辑,您可能能够更好地表示我的代码?
    • @CR47 您需要在调用Drupal.myTest.myFunction(className); 时将className 作为参数传递
    • @CR47 这是一个参数定义...不存在...您调用该函数的地方...在这种情况下在$('#test').on('click', function(event) { Drupal.myTest.myFunction(className); });
    • @CR47 @CR47 在你的情况下 myFunction 正在接受一个名为 className 的参数,因此在函数 className 的范围内将引用本地参数而不是闭包变量 className
    • @CR47 我已经用你的新代码更新了答案......另一个解决方案是从myFunction 中删除参数className,以便在函数范围内className 将引用闭包变量
    【解决方案2】:

    $(document).ready()之外声明函数

    <script type="text/javascript">
        var myPassedVar;
    
        $(document).ready(function() {
            $('.buttons).click(function() {
              var className = $(this).attr(class);
            });
    
            myFunction = function (className) {
              myPassedVar = className;
              alert(myPassedVar);
            };
    
            $('#test').click(function() {
              myFunction(className);
            }
        }); //END $(document).ready()
    </script>
    

    【讨论】:

    • 你的意思是声明变量吗?
    • 文档外部准备就绪。声明它,创建它,给它赋值,只要确保它存在于 $(document).ready() 之外——或者它的简写版本:$(function()
    • 我对我的问题进行了编辑,除了您提出的建议之外,它还可以更好地显示我的代码。
    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2019-09-12
    • 2020-07-02
    • 2019-06-28
    • 1970-01-01
    • 2013-04-09
    • 2013-03-07
    • 1970-01-01
    相关资源
    最近更新 更多