конечно, нет, иначе другие сценарии не распознали бы его. проблема не в значении этой переменной - значение установлено отлично. проблема в том, что селектор возвращает пустой
ценарий: у меня есть сценарий menubar.js, который при загрузке страницы запрашивает у сервера разрешения пользователя, а затем создает на их основе меню. фрагмент кода:
$(function () {
//initialize the header buttons according to user's permissions
InitializeCurrentUser();
});
function InitializeCurrentUser() {
//get current user
$.ajax(
{
url: "../Login/LoginService.asmx/GetCurrentUser",
success: function (result) {
var currentUserRoles = result.d;
output = '<ul class="Header"> ';
if ($.inArray("reports", currentUserRoles) > -1) {
output += '<a href="../Reports/Reports.aspx" ><li id="lnkReports">Reports </li></a>';
}
//etc...
console.log('generating menu');
$("#HeaderMenu").html(output);
}
});
}
Этот скрипт включен во все мои страницы.
Теперь я хотел бы отметить<li>
представляющий текущую страницу с «текущим» классом.
я добавилvar currentPage
к моему сценарию menubar.js и на каждой странице (например, в reportsPage.js):
$(function() {
//set this page as the current page;
currentPage = Enum.Page.Reports;
});
и в menubar.js: функция, которая вызывается для document.ready:
function SetCurrentPage() {
$("#HeaderMenu li").removeClass('current');
var liElement = null;
switch (currentPage) {
case Enum.Page.Reports:
liElement = $("#lnkReports");
break;
}
console.log('adding a class to: ');
console.log(liElement);
liElement.addClass('current');
}
журнал, который я получаю:
> generating menu
> adding a class to:
> []
так что кажется, что элемент, который я ищу, еще не был добавлен в DOM.
Я думаю, что должно быть какое-то решение, использующееlive()
, но когда я пытаюсьlive('load',...)
это никогда не называют ...