【问题标题】:Dynamically created buttons won't fire when clicked单击时不会触发动态创建的按钮
【发布时间】:2018-09-13 17:46:33
【问题描述】:

我正在根据用户在输入框中输入的内容创建按钮。但是,我链接到动态创建的按钮的功能在按下时不会触发。

function btnCreate() {
num++;
userBtn = $("<button>")
userBtn
    .addClass("btn search-term-btn dynamicElement")
    .appendTo($(".btn-holder"))
    .text(topics)
    .attr("data-name", topics);
usedTopics.push(topics + num);
topics = [];
console.log(num);
};

$(".search-term-btn").on("click", ".dynamicElement", function () {
// takes the name of the button 
searchValue = $(".search-term").attr("data-name");
console.log(searchValue);
})

类是正确的,我与检查员检查过。我只是似乎无法弄清楚为什么它没有响应

【问题讨论】:

标签: javascript jquery


【解决方案1】:

在 DOM 上创建点击事件。

$(document).on("click", ".search-term-btn .dynamicElement", function () {
   console.log(this)
});

【讨论】:

  • 天哪,这解决了它.. 谢谢。我一直在回顾一些活动作品,但没有人使用过这个。但这似乎已经解决了。非常感谢!
【解决方案2】:
while you are creating the buttons, you can add the onclick function there..
like userBtn = $("<button onlcikc="somefunction(this)">")

或 你可以在函数上使用

$('body').on(  "click",".dynamicElement", function() {  
  //your code
}); 

【讨论】:

  • 委托已在 jquery 3 中被弃用,您应该使用 .on() 代替
  • 是的,比如 $(document).on("click", 'p',function() { $(this).after( "

    点我看下一段。

    " ); });
  • 第二个仍然无法工作,因为 .dynamicElement 是在加载文档后创建的。
猜你喜欢
  • 2012-05-14
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
相关资源
最近更新 更多