Jquery 动态添加事件

Jquery 动态添加事件,jquery,css,events,dynamic,Jquery,Css,Events,Dynamic,我在js文件中有以下代码: $(".dropmenu").on("click", function(event){ event.preventDefault(); $(this).parent().find("ul").slideToggle(); }); 我的网页上有以下代码: var append="<ul>"; $.each(items, function(i, v){ append += "<li><a cla

我在js文件中有以下代码:

    $(".dropmenu").on("click", function(event){
      event.preventDefault();
      $(this).parent().find("ul").slideToggle();
    });
我的网页上有以下代码:

var append="<ul>";

$.each(items, function(i, v){
  append += "<li><a class='dropmenu' href='#'> Option </a>" +
              "<ul>" +
                 "<li><a href='somelink'>somelink</a></li>" +
              "</ul></li>";

}

$("div").append(append);
var append=“
    ”; $。每个(项目、功能(i、v){ 追加+=“
  • ”+ “
      ”+ “
    • ”+ “
  • ”; } $(“div”)。追加(追加);
关键是当我的ul标签被填充时,click事件不会触发。我认为这是因为类进入锚点是动态的

如何在append函数之后添加click事件?

用于将事件附加到动态添加的DOM

事件委派允许我们将单个事件侦听器附加到父元素,该事件侦听器将为与选择器匹配的所有子体触发,无论这些子体现在存在还是将来添加

使用此选项用于委派。也可以使用
.delegate()

当您的
元素被动态追加时,您必须使用任何其他静态父元素的
$(document)
来委托事件

$(document).on('click','.dropmenu', function(event){
  event.preventDefault();
  $(this).parent().find("ul").slideToggle();
});

您是否将代码放入
$(文档)中。准备就绪
我将其放入,并且工作正常

您需要将其绑定到不同的元素,ul也会动态添加。谢谢@Guffa,您的答案非常简单better@elchente23:事实上,我没有发布这个问题的任何答案。当我看到它时,它是关闭的。它对你有效,因为你在附加元素后附加了click事件…这意味着元素是present ready:DSee委托事件处理如何解决动态创建元素的问题:和。
$(document).on('click','.dropmenu', function(event){
  event.preventDefault();
  $(this).parent().find("ul").slideToggle();
});