jQuery 数值参数中的变量

jQuery variable in numerical parameter

所以我是 jQuery 的新手,但我做了一些项目来尝试变得更好。现在我 运行 陷入了这个问题,我无法解决这个问题,不知道要搜索什么来获得帮助...

我已经将变量 "height" 设置为原来的 "data-sizey"。这工作正常,因为控制台输出正确的大小。接下来我要做的是在第二个函数中使用这个变量,这里是 gridster.resize_widget($(this).parent().parent(), 0, height);

问题是这不起作用(什么都不做),我不明白为什么。这可能真的很愚蠢,如果你能向我解释我应该如何在这里使用变量,我将不胜感激!

 //Resize widget on handler click
          function handler1() {
              var height = $(this).parent().parent().attr( "data-sizey" );
             // console.log(height, "Height");
              gridster.resize_widget($(this).parent().parent(), 0, 1);
              $(this).toggleClass('arrow_rotate');
              $(this).parent().parent().toggleClass('minimized');
               $(this).one("click", handler2);
            }

            function handler2() {
                gridster.resize_widget($(this).parent().parent(), 0, height);
                $(this).toggleClass('arrow_rotate');
                $(this).parent().parent().toggleClass('minimized');
                $(this).one("click", handler1);
            }
            $(".minimize").one("click", handler1);

问题是您的 height 变量在 handler2 函数的范围内不可见,因为它是在 handler1 内声明的,您可以将它作为参数传递给 handler2如下:

      //Resize widget on handler click
      function handler1() {
          var height = $(this).parent().parent().attr( "data-sizey" );
         // console.log(height, "Height");
          gridster.resize_widget($(this).parent().parent(), 0, 1);
          $(this).toggleClass('arrow_rotate');
          $(this).parent().parent().toggleClass('minimized');
          $(this).one("click", function(){
              handler2(height);
          });
        }

        function handler2(height) {
            gridster.resize_widget($(this).parent().parent(), 0, height);
            $(this).toggleClass('arrow_rotate');
            $(this).parent().parent().toggleClass('minimized');
            $(this).one("click", handler1);
        }
        $(".minimize").one("click", handler1);

或者在 handler1 范围之外定义 height 变量:

      //Resize widget on handler click
      var height;
      function handler1() {
          height = $(this).parent().parent().attr( "data-sizey" );
         // console.log(height, "Height");
          gridster.resize_widget($(this).parent().parent(), 0, 1);
          $(this).toggleClass('arrow_rotate');
          $(this).parent().parent().toggleClass('minimized');
          $(this).one("click", handler2);
        }

        function handler2() {
            gridster.resize_widget($(this).parent().parent(), 0, height);
            $(this).toggleClass('arrow_rotate');
            $(this).parent().parent().toggleClass('minimized');
            $(this).one("click", handler1);
        }
        $(".minimize").one("click", handler1);