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遵守时空法则。您需要在创建按钮后添加单击事件,或者在添加单击事件句柄时使用事件委派技术。您应该解释此方法与他尝试的方法有何不同。您应该解释此方法与他尝试的方法有何不同。