如何在jquery中触发动态创建元素上的click事件

use*_*527 9 jquery element dynamic click

if($('#term').children().length == 0){
        $("#term").append("<ul id='ulDynamic' class='ulDynamic'></ul>");
        var i;
        for(i=1;i<=3;i++){
            var liDynamic = "Term "+i;
            var liId = "Term"+i;
            $("#ulDynamic").append("<li id="+liId+ " class='listDynamic'>"+ liDynamic +"</li>");
                    if(i==0){
                       $('#'+liId).click();
        }
    }
Run Code Online (Sandbox Code Playgroud)

.click()无效,因为liId是动态创建的元素.我想在页面加载时自动点击第一个li元素.还有其他办法吗?

Sud*_*oti 11

做类似的事情:

$("#term").append("<ul id='ulDynamic' class='ulDynamic'></ul>");
        var i;
        for(i=1;i<=3;i++){
            var liDynamic = "Term "+i;
            var liId = "Term"+i;
            var $li = $("<li />", {
                "id" : liId,
                "class" : 'listDynamic'
            }).html(liDynamic).click(function() {
                alert("clicked:" + this.id);
            });

            $("#ulDynamic").append($li);            
        }
$("#ulDynamic").find("li:first").trigger("click");
Run Code Online (Sandbox Code Playgroud)

演示:: jsFiddle

  • @ user2682527你可以把它标记为接受的答案,如果它对你有用..! (3认同)

Dip*_*mar 7

我已经看到你的ID开头Term所以你可以使用.on()在稍后添加的DOM上添加click事件.

Exapmple

$(document).on('click','[id^="Term"]',function(){
  //code here
});
Run Code Online (Sandbox Code Playgroud)

  • 他希望触发click事件,而不是click事件和click事件. (8认同)

Gau*_*164 5

试试.trigger()喜欢

 $('#'+liId).trigger('click');
Run Code Online (Sandbox Code Playgroud)