В настоящее время я работаю над сайтом, на котором есть кнопка выхода из системы, которая динамически вставляется в боковую панель всякий раз, когда окно достигает определенного размера. Когда я нажимаю кнопку выхода, я хочу вызвать метод logOut();
Идентификатор тега привязки везде "btnLogOut" (даже проверил его, выполнив поиск в моей IDE на наличие каких-либо невидимых символов или чего-то еще).
На каждой странице всегда есть только один тег привязки выхода из системы. Чтобы быть уверенным, я заменил «btnLogOut» на «btnLogOut_zq» везде, и ошибка сохранилась.
Я использовал setInterval(function(){ console.log($("#btnLogOut").length); },1);
, и это возвращает 1 постоянно, изменяя размеры окна и делая его больше, а затем меньше и так далее, чтобы элемент всегда присутствовал на странице.
Использование метода .on()
для обнаружения клика, а затем вызов logOut();
метода
$(document).ready(function()
{
$(document).on("click", "#btnLogOut", function()
{
logOut();
});
});
Это то, что я использую, чтобы взять оригинальный тег привязки и поместить его на боковую панель (только ту часть, которая имеет отношение к кнопке выхода из системы):
$.fn.navList = function() {
var $this = $(this);
$a = $this.find('a'),
b = [];
$a.each(function() {
var $this = $(this),
indent = Math.max(0, $this.parents('li').length - 1),
href = $this.attr('href'),
target = $this.attr('target');
if($a.attr("id") === "btnLogOut") {
console.log($a);
b.push(
'<a ' +
'id="btnLogOut" ' +
'class="link depth-' + indent + '"' +
( (typeof target !== 'undefined' && target != '') ? ' target="' + target + '"' : '') +
( (typeof href !== 'undefined' && href != '') ? ' href="' + href + '"' : '') +
'>' +
$this.text() +
'</a>'
);
}
});
return b.join('');
};
$(
'<div id="navPanel">' +
'<nav>' +
$('#btns').navList() +
'</nav>' +
'</div>'
)