我希望它显示与标签相关的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提供空白警报。这是为什么?
答案 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();
}
});
}