jQuery将变量值传递给子函数

时间:2013-10-03 13:42:45

标签: jquery function variables each

它以var“el”的方式返回undefined,就像我拥有此代码一样

$('.element').each(function(){
    var el = $(this);
    setTimeout(function(el) {
        el.css({ marginTop: -100 });
    }, 550);
    $(window).resize(function(el) {
        setTimeout(function(el) {
            el.css({ marginTop: -100 }); //this is where el is undefined
        }, 550);            
    })
});

知道我做错了什么吗?

3 个答案:

答案 0 :(得分:3)

我认为这是因为el作为函数参数。尝试删除它们。

$('.element').each(function(){
    var el = $(this);
    setTimeout(function() {
        el.css({ marginTop: -100 });
    }, 550);
    $(window).resize(function() {
        setTimeout(function() {
            el.css({ marginTop: -100 }); //this is where el is undefined
        }, 550);            
    })
});

如果我错了,别忘了把我钉在十字架上:P

编辑: 只是为了解释发生了什么,function中的resize传递了一个event对象,因此它会覆盖您设置的el变量。 Event不是jQuery对象,因此您无法在其上调用css函数。

答案 1 :(得分:0)

您传递到elsetTimeout事件的resize参数是不必要的,

工作示例:http://jsfiddle.net/atg7F/

答案 2 :(得分:0)

你正在覆盖el。试试这个:

http://jsfiddle.net/Um7Tp/1/

$('.element').each(function(){
    var el = $(this); // this var was overwritten...
    setTimeout(function() { // here
        console.log(el);
        el.css({ marginTop: -100 });
    }, 550);

    $(window).resize(function() { // here
        setTimeout(function() { // and here
            el.css({ marginTop: -100 }); 
            console.log(el);
        }, 550);            
    })
});