javascript - 关于和生活的 jquery 问题

标签 javascript jquery

我有以下代码:

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/

相关文章:

javascript - 强制启动选项卡处于事件状态

javascript - 为什么这个日期转换需要在月份上加1?

javascript - Codeigniter - 特定输入不按表单获取

javascript - Jquery:如何设置延迟并在新创建的元素上向上滑动

jquery - 如何在 jQuery UI 对话框中显示 IFRAME

javascript - 无法将 Dropzone 附加到 AJAX 加载的 DIV

javascript - 从数据库动态检索数据不起作用

javascript - 显示/隐藏 div 的问题 - 单击外部 div 来隐藏它时,您需要单击两次才能再次显示它

javascript - 如何使用 javascript 在 getSelection() 中查找所选文本的索引?

Javascript 下拉列表工作,但显示空值