使用.each返回对象会抛出Uncaught Reference错误

时间:2012-08-11 19:19:03

标签: jquery

我正在重写一些代码,这些代码适用于目前无效的代码。基本上,我循环遍历div以找出哪一个是可见的,我想继续将此div缓存到jquery对象中。

    $('#MainDiv .LPanel').each(function () {

        if ($(this).is(':visible') === true) {
            var ThePanel = $(this);
        }
    });

    if (ThePanel.width() < 700) { // bugs here

为什么ThePanel无法访问?我错过了什么?

感谢您的建议。

PS:工作的代码只返回attr('id');,但我想要整个对象!

2 个答案:

答案 0 :(得分:3)

您在有限的范围内使用var。正确的方法是:

var ThePanel;
$('#MainDiv .LPanel').each(function () {

    if ($(this).is(':visible') === true) {
        ThePanel = $(this);
    }
});

if (ThePanel.width() < 700) { // bugs here

你为什么不这样做

var ThePanel = $("#MainDiv .LPanel:visible");
if (ThePanel && ThePanel.width() < 700) ...

???

答案 1 :(得分:1)

在循环外声明变量ThePanel。每次回调完成时,它都会超出范围。