我是JQuery的新手,但是我搞砸了...
我正在尝试为我的网站建立一个导览。我具有用于构建和显示弹出窗口的功能。
它们确实会显示,但是按钮仅在第一个弹出窗口中起作用(只有一个按钮)。
这是我现在拥有的代码:
function createButton(i){ //Creates buttons for later appending to popover's content
if (i==0){ //First popover, just needs "Next" button
return '<a class="btn btn-light border border-dark float-right mb-2" >Next</a>';
}
else if(i<popovers.length-1){ //Popovers in the middle need both "Previous" and "Next" buttons
var buttons = new Array();
buttons[0] = '<a class="btn btn-light border border-dark float-left mb-2">Previous</a>';
buttons[1] = '<a class="btn btn-light border border-dark float-right mb-2">Next</a>';
return buttons;
}
else{ //The last popover only needs a "Finish" button
return '<a class="btn btn-light border border-dark float-right mb-2">Finish</a>';
}
}
问题必须在这里:
function showPopover(i){
var current = popovers[i];
var button = $(createButton(i));
current.popover('toggle');
var new_position = $('.popover').offset();
var content = $('.popover-body');
if(button.length == 2){
$(button[0]).appendTo(content);
$(button[1]).appendTo(content);
}
else{
button.appendTo(content);
}
window.scrollTo( new_position.left, new_position.top - 60 );
if(button.length == 2){
$(button[0]).click(function ()
{
current.popover('toggle');
content.detach();
i--;
if(i>=0){
showPopover(i);
}
});
$(button[1]).click(function ()
{
current.popover('toggle');
content.detach();
i++;
if(i!=popovers.length){
showPopover(i);
}
});
}
else{
button.click(function ()
{
current.popover( 'toggle' );
content.detach();
i++;
if(i!=popovers.length){
showPopover(i);
}
});
}
};
在检查按钮时,我发现没有任何事件与事件相关,因此问题出在单击功能上。
我以为我可能在错误地使用了JQuery选择器;但是,附加功能可以正常工作并在弹出框上显示按钮。
感谢您的回答!
答案 0 :(得分:1)
我想首先将这些按钮附加到DOM,然后再附加事件。
因为我可以看到您正在使用$(button[0])
。 jQuery将在DOM中搜索该元素,并在其中附加click事件。而且,button[0]
并不是真正的DOM对象,但在那时,它只是一个字符串。