Похоже, вы получаете текст до того, как метод загрузки завершит заполнение вкладки. Попробуйте выполнить свой код в обратном вызове .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 вкладку, вы просто сохраняете ссылку на нее в другой переменной в начале вашей функции.