0

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

4 回答 4

0

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

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

于 2013-06-07T20:24:43.817 回答
0

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

于 2013-06-07T20:30:22.677 回答
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

        }
    });
}
于 2013-06-07T20:31:37.597 回答
-1

你可以像这样使用点击:

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

http://jsfiddle.net/7MBw4/

于 2013-06-07T20:18:57.033 回答