1

我将 var x 的值设置为单击按钮的值。然后我想使用 var x 作为我的 jquery 动画代码中的值。

var x = $('input').click(function() {
    $(this).val();
});

$("li").click(function() {
    $(this)
        .stop()
        .animate(
            {height:'150px'},
            {queue:false, duration:600, easing: x }
        );
});

$("li").mouseout(function() {  
    $(this)
        .stop()
        .animate(
            {height:'50px'},
            {queue:false, duration:600, easing: x });
});​

我究竟做错了什么 ?演示:http: //jsfiddle.net/EnigmaMaster/z9dXA/7/

4

3 回答 3

4

演示 jsFiddle

var x = '';    // define your var (make it re-usable inside functions)

$('input').click(function() {
   x = $(this).val();   // set your var'x' value for use.
});

$("li").click(function() {   
    $(this).stop().animate({height:150},{queue:false, duration:600, easing: x });
});
    
$("li").mouseout(function(){  
    $(this).stop().animate({height:50},{queue:false, duration:600, easing: x });
});
于 2012-05-20T21:33:32.643 回答
2

点击是异步的。像这样做:

var x;
$('input').click(function() {
    x = $(this).val();
});

见小提琴:http: //jsfiddle.net/z9dXA/8/

这仅在顺便说一下 li 之前单击输入时才有效,否则 x 将没有值。也许提供一个默认值,例如:

var x = 'swing';
$('input').click(function() {
    x = $(this).val();
});
于 2012-05-20T21:32:47.130 回答
1

您当前设置x为等于返回的 jQuery 对象$("input")。该方法设置了一个稍后.click()将调用的单击处理程序(当单击发生时),因此它不会在单击时返回值 - 它返回相同的 jQuery 对象,以便您可以将多个 jQuery 方法链接在一起. 这就是你展示的原因。$("input")alert(y)[object Object]

尝试将第一位更改为:

var x = "linear";  // give x a default value

$('input').click(function() {
    x = $(this).val();  // store the type of easing to be used
});

然后你实际上不需要y变量,你可以直接使用x

$("li").click(function() {
    $(this).stop().animate({ height: '150px' }, {
        queue: false,
        duration: 600,
        easing: x
    });
});

$("li").mouseout(function() {
    $(this).stop().animate({ height: '50px'}, {
        queue: false,
        duration: 600,
        easing: x
    });
});​

更新演示:http: //jsfiddle.net/z9dXA/9/

于 2012-05-20T21:36:15.090 回答