-1

我正在将一些可以运行的代码重写为当前无法运行的代码。基本上,我循环遍历 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');,但我想要整个对象!

4

2 回答 2

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) ...

???

于 2012-08-11T19:22:09.807 回答
1

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

于 2012-08-11T19:21:04.417 回答