$('div#Settings ul li').click(function() {
var url, template;
var self = $(this);
if (!$(self).hasClass('selected')) {
var ContextMenu = CreateContext($(self));
var id = $(self).attr('id');
и т.д ...Игра вокруг с объектами JQuery и переменных
function CreateContext(item) {
var ContextMenu = $('div#ContextMenu');
if (!$(ContextMenu).length) {
$('<div id="ContextMenu"></div>').appendTo('body');
CreateContext(item);
}
$(ContextMenu).slideUp(150, 'swing', function() {
$(ContextMenu).insertAfter(item);
});
$(item).addClass('selected').siblings().removeClass('selected');
return $(ContextMenu);
}
На первом вызове CreateContext(item)
я не могу использовать переменную ContextMenu
позже в .click
коде. Однако, если CreateContext вызывается дважды, все работает нормально. Я получаю неопределенную переменную, когда i console.log(ContextMenu)
в первый раз. Во второй раз он получает объект правильно. Как я могу это исправить? Благодарю.
Но я создаю и добавляю его к телу при первом вызове ... – user1027620
nevermind. отлично работает, спасибо :) – user1027620
@ user1027620 - Вы создаете и добавляете его, но вы не устанавливали значение локальной переменной 'ContextMenu' после его создания, чтобы остальная часть кода не могла использовать тот, который вы только что создали , Обратите внимание, как мой предложенный код устанавливает значение 'ContextMenu' при его создании. – jfriend00