Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法将单击事件附加到JQuery中的按钮_Javascript_Jquery_Html_Button - Fatal编程技术网

Javascript 无法将单击事件附加到JQuery中的按钮

Javascript 无法将单击事件附加到JQuery中的按钮,javascript,jquery,html,button,Javascript,Jquery,Html,Button,我是JQuery的新手,我把它搞砸了… 我正在尝试为我的网站建立一个巡演。我有这个功能来构建和显示弹出窗口。 它们确实会出现,但按钮只在第一个弹出窗口中工作(只有一个按钮)。 这是我现在掌握的代码: function createButton(i){ //Creates buttons for later appending to popover's content if (i==0){ //First popover, just needs "Next" button



我是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>';
    }
}
在检查按钮时,我发现按钮没有附加任何事件,因此问题在于单击功能。
我认为我可能错误地使用了JQuery选择器;但是,append函数确实起作用,并在弹出窗口上显示按钮。


谢谢你的回答

我认为首先要将这些按钮附加到DOM中,然后只附加事件


因为我可以看到您正在使用
$(按钮[0])
一些东西。jQuery将在DOM中搜索该元素,并在其中附加click事件。还有一件事,按钮[0]不是一个实际的DOM对象,但此时它只是一个字符串。

那么我应该如何传递JQuery这个DOM对象呢?我不明白你的意思,抱歉,请尝试使用if
$(按钮[0])
试试
$(“.popover body a:first child”)。单击…
,或者如果可以为按钮分配一些ID,则直接使用
$(“#someId”)。单击…
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);
                }
            });
        }


    };