.on('click')不起作用,但所有其他处理程序都可以


.on('click') doesn't work, but all other handlers do

我最近问了一个关于触发动态创建的div的问题,并被引入到。on()函数中。

'keyup'工作得很好,'mouseover'工作得很好,我测试过的其他一些工作,但'click'就是不会触发。

我通过ajax和。php创建了一个添加信息的div,其中包含一些数据,如下所示:

function loadNewcomment(divID) {
$.ajax({
        url: templateUrl+"/enternote.php",
        cache: false,
        success: function(html){
            $("#"+divID).append(html);
        }
    });
}

我想为创建的div中的一个元素触发keyup,下面的代码适用于此:

$("#notebox").on('keyup', '.note-field', function(event){
    var thisString = $(this).val();
    $keyLength = thisString.length;
    $rowCount = Math.ceil($keyLength/40);
    $currentRow = $(this).attr("rows");
    if($currentRow < $rowCount){
        $(this).animate({rows:$rowCount},50);
    }        
});

这段代码不起作用:

$("#notebox").on('click', '.note-field', function() {
    alert("clicked");
});

动态DOM和jQuery是一种痛苦。我知道它被弃用了,但我过去用过,效果很好:http://api.jquery.com/live/

FWIW -你也可以尝试使用bind() - http://api.jquery.com/bind/

我有一个。stoppropagation ();在包含div的代码的其他地方,我现在把它注释掉了,它可以工作,谢谢。

是否可以在html后面附加click事件

function loadNewcomment(divID) {
$.ajax({
        url: templateUrl+"/enternote.php",
        cache: false,
        success: function(html){
            $("#"+divID).append(html).bind('click', function() { /* Click event code here */ }); // id divID is #notebox
        }
    });
}

你可以像这样使用click:

$("#notebox").click( function() {
  alert("clicked");
});
http://jsfiddle.net/7MBw4/