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