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

时间:2013-06-07 20:14:58

标签: php jquery ajax triggers click

我最近问了一个关于触发动态创建的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");
});

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我有一个.stopPropagation();在包含div的代码中的其他地方,我现在评论它并且它有效,谢谢。

答案 2 :(得分:0)

附加html后是否可以附加点击事件。

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

        }
    });
}

答案 3 :(得分:-1)

您可以像这样使用点击:

$("#notebox").click( function() {
  alert("clicked");
});

http://jsfiddle.net/7MBw4/