使用函数无法获取值,返回空值

时间:2011-12-01 22:53:55

标签: html ajax variables jquery

我希望它显示与标签相关的div,如果它= 1,或者如果它= 0则显示它。

脚本:

function blah(){
 loadtab('a');
 loadtab('b');
 loadtab('c');
}

var page = cheese

function loadtab(tab){
    $('#'+tab).hide();
    $('#'+tab).load("devices/" + page + ".html " + "#" + tab);
        var tabcontent = $("#"+tab).text();
        alert(tab); //works
        alert(tabcontent); //doesn't
        if (tabcontent == "1"){
            $('#'+tab).show();
        }
        else{
            $('#'+tab).hide();
        }
}

*在前面的代码中定义的变量

在cheese.html上的HTML:

<div id="a">0</div>
<div id="b">0</div>
<div id="c">1</div>

警报标签提供单独警报中的a,b和c。警报tabcontent提供空白警报。这是为什么?

2 个答案:

答案 0 :(得分:2)

好像你在加载方法完成填充选项卡之前得到了文本。尝试在.load的回调中执行代码。

$('#'+tab).load("devices/" + page + ".html " + "#" + tab, function(){ 
   var tabcontent = $("#"+tab).text();
    alert(tab); //works
    alert(tabcontent); //doesn't
    if (tabcontent == "1"){
        $('#'+tab).show();
    }
    else{
        $('#'+tab).hide();
    }
});

另外,您应该缓存$('#'+tab),因为您经常在该函数中使用它。

要缓存选择器,只需执行此操作即可。

 var $tab = $('#'+tab);  // store your jQuery object into a variable 
 $tab.hide();
 $tab.load("devices/" + page + ".html " + "#" + tab);
     var tabcontent = $tab.text();
     alert(tab); //works
     alert(tabcontent); //doesn't
     if (tabcontent == "1"){
         $tab.show();
     }
     else{
         $tab.hide();
     }

它只是提高了性能,因为jQuery不必继续在DOM中搜索选项卡,只需在函数开头的另一个变量中继续引用它。

答案 1 :(得分:0)

尝试这样做:

function loadtab(tab){
    $('#'+tab).hide();
    $('#'+tab).load("devices/" + page + ".html " + "#" + tab, function() {
        var tabcontent = $("#"+tab).text();
        alert(tab); //works
        alert(tabcontent); //doesn't
        if (tabcontent == "1"){
            $('#'+tab).show();
        }
        else{
            $('#'+tab).hide();
        }
    });
}