在jquery-added元素上单击事件

时间:2014-05-20 07:39:09

标签: jquery

我使用jquery添加一个具有自己唯一ID的元素,之后我想使用其id在该添加元素上点击一个click事件。

这是代码,由于某种原因它不起作用。

我是这个编程的新手,所以也许我没有看到明显的东西。

$(document).ready(function () {
        $("#type").click(function () {
            $(".footer").prepend('<div id="next">
                         <a id="next" href="#">
                         <img class="image" src="#" alt="next"></a></div>');
            $("#next").click(function () {
                $(".current")
                    .removeClass("current")
                    .addClass("done")
                    .next()
                    .removeClass("notdone")
                    .addClass("current");
            });
        }); 

3 个答案:

答案 0 :(得分:0)

USe event delegation

$(document).on("click", "#next", function () {
    $(".current")
        .removeClass("current")
        .addClass("done")
        .next()
        .removeClass("notdone")
        .addClass("current");
});

这会将事件绑定到动态创建的元素。

答案 1 :(得分:0)

在动态添加下一个元素时,您需要event delegation

  

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

您也可以在next的每次点击前面添加具有相同ID type的元素。将class替换为next,并使用:

  $('.footer').on("click", ".next", function () { 
              $(".current")
              .removeClass("current")
              .addClass("done")
              .next()
              .removeClass("notdone")
              .addClass("current");
          });

答案 2 :(得分:0)

尝试这样的事情

$("#type").click(function () {
    $(".footer").prepend('<div id="next"><a id="next" href="#"><img class="image" src="#" alt="next"></a></div>');
}); 
$(".footer").on('click','#next',function () {
    $(".current")
        .removeClass("current")
        .addClass("done")
        .next()
        .removeClass("notdone")
        .addClass("current");
});