Javascript 同一类别的多个按钮don';行不通

Javascript 同一类别的多个按钮don';行不通,javascript,jquery,Javascript,Jquery,我从一个单词列表中创建了多个具有相同类的按钮 var words = $(this).val().split(' '); $.each(words, function(i, v) { if ($.trim(v) !== '') { html += "<button class='wordbtn'>"+ v +"</button>" + " " } }); $("p").html(html);

我从一个单词列表中创建了多个具有相同类的按钮

var words = $(this).val().split(' ');
    $.each(words, function(i, v) {
         if ($.trim(v) !== '') {
            html += "<button class='wordbtn'>"+ v +"</button>" + " "
         }
    });

$("p").html(html);
当我检查代码时,会显示按钮,但当我查看源代码时,不会显示按钮。 如果我插入一个pre按钮进行测试,它就会工作

<p><button class='wordbtn'>Test</button><p>
测试

我假设您正在运行此代码:

$(".wordbtn").click(function(){
    console.log('clicked')
})
在创建按钮之前

这无法工作,因为这些按钮不存在,因此无法向其添加事件

使用一种叫做“事件委派”的方法,你可以得到你想要的效果


我假设您正在运行以下代码:

$(".wordbtn").click(function(){
    console.log('clicked')
})
在创建按钮之前

这无法工作,因为这些按钮不存在,因此无法向其添加事件

使用一种叫做“事件委派”的方法,你可以得到你想要的效果


我认为问题在于运行代码时,wordbtn按钮仍然不存在

$(".wordbtn").click(function(){
    console.log('clicked')
})
因此,单击事件不会分配给页面中的任何元素

尝试将按钮的单击事件替换为:

$(document).on("click", ".wordbtn", function(event){
    console.log('clicked');
});

现在,即使添加了一个新按钮,click事件也会被触发,这是因为该事件在冒泡到那里之后由a present document元素处理。

我认为问题在于运行代码时wordbtn按钮仍然不存在

$(".wordbtn").click(function(){
    console.log('clicked')
})
因此,单击事件不会分配给页面中的任何元素

尝试将按钮的单击事件替换为:

$(document).on("click", ".wordbtn", function(event){
    console.log('clicked');
});

现在,即使添加了一个新的按钮,单击事件也会被触发,这是因为事件在冒泡到那里之后由a present document元素处理。

添加事件侦听器之后,所有事件都不会侦听生成的元素。请参见以下使用JQuery和纯JavaScript

使用
docuemnt.event

document.getElementById(“输入”).addEventListener(“键控”,函数(){
var words=this.value.replace(/\s+/g,“”.trim().split(“”);
var html=“”;
for(var i=0;i-1){
console.log('clicked')
}
}


添加事件侦听器后,所有事件都不会侦听生成的元素。请参见以下使用JQuery和纯JavaScript

使用
docuemnt.event

document.getElementById(“输入”).addEventListener(“键控”,函数(){
var words=this.value.replace(/\s+/g,“”.trim().split(“”);
var html=“”;
for(var i=0;i-1){
console.log('clicked')
}
}


这是因为javascript是在加载源代码后在客户端执行的。将事件直接附加在
$(“p”).html(html)之后也许?JS代码永远不会影响“查看源代码”。如果这些按钮是在添加.click处理程序后动态创建的,那么当然这些按钮不会添加click处理程序,javascript遵守时空法则。您需要在创建按钮后添加click事件,或者在添加click事件句柄时使用事件委派技术,这是因为加载源代码后,javascript在客户端执行。将事件直接附加在
$(“p”).html(html)之后也许?JS代码永远不会影响“查看源代码”。如果这些按钮是在添加.click处理程序后动态创建的,那么当然这些按钮不会添加click处理程序,javascript遵守时空法则。您需要在创建按钮后添加单击事件,或者在添加单击事件句柄时使用事件委派技术。您应该解释此方法与他尝试的方法有何不同。您应该解释此方法与他尝试的方法有何不同。