我有以下代码:
var $reviewButton = $('span.review_button');
$reviewButton
.live('click',
function(){
$('#add_reviews').show();
}
)
稍后在脚本中,我使用 AJAX 调用加载一些内容,$('span.review_button') 的另一个实例进入图片。我更新了上面的代码以使用“.live”,因为点击事件不适用于 AJAX 生成的评论按钮。
此代码有效,因为 .live(click//) 事件适用于静态“span.review_button”和 AJAX 生成的“span.review_button”
但是我看到 .live 被贬低了,所以我试图通过切换到 '.on' 来遵循 jquery 文档说明,但是当我切换到下面的代码时,我遇到了与切换到 '.live 之前相同的问题' 其中点击功能适用于 'span.review_button' 的原始实例,但不适用于 AJAX 生成的实例:
var $reviewButton = $('span.review_button');
$reviewButton
.on('click',
function(){
$('#add_reviews').show();
}
)
建议?
最佳答案
事件委托(delegate)的正确语法是:
$("body").on("click", "span.review_button", function() {
$("#add_reviews").show();
});
在这里,您可以使用 "span.review_button"
的任何 static 父元素代替 body
。
注意! 正如评论中所讨论的,您应该使用字符串值作为 on()
的第二个参数委托(delegate)事件方法中的方法,但不是 jQuery 对象。
关于javascript - 关于和生活的 jquery 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13712266/