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);
所以我是 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);