javascript - 不确定 .on() 方法

标签 javascript jquery

我正在使用 $.click() 方法来触发一些事件。但是后来我需要在声明元素之前为某些 HTML 元素设置一些事件。让我们以此为例:

<script>
    $('div.hide').click(function() {
        $('div.hide').css({'display' : 'none'});
     });
</script>
<div class="hide">some text</div>

缺点是在设置.click()方法时,div.hide元素不存在,所以没有设置触发器。

所以我转向了 .on() 方法,如下所示:

<script>
    $('div.hide').on('click', function() {
        $('div.hide').css({'display' : 'none'});
    });
</script>
<div class="hide">some text</div>

但这也行不通。我认为调用 .on() 会使所有现有和 future 的 div.hide 元素触发 'click' function()

我设法克服了这种不便,但据我所知,我想知道我做错了什么。没有办法为 future 的 HTML 元素分配触发器吗?

我的孤独是:

<script>
    $(document).ready( function() {
        $('div.hide').click(function() {
            $('div.hide').css({'display' : 'none'});
        });
    });
</script>
<div class="hide">some text</div>

最佳答案

你错过了三参数版本:

$('body').on('click', 'div.hide', function() { ... });

这会将处理程序放在 <body> 上但它会捕获冒泡的事件并在目标元素与选择器(第二个参数)匹配时调用处理程序。

处理程序不必继续 <body> ;它可以是您的 <div> 的任何父容器元素.

“on”方法取代了旧的“live”和“delegate”方法,以及“bind”本身。

关于javascript - 不确定 .on() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10983244/

相关文章:

jquery - will_paginate 使用 jQuery 在 Rails 3.1 中加载更多按钮

javascript - 密码验证至少为 6 个字符

jquery - 如何使 jQuery 数据表分页忽略隐藏行?

javascript - 奇怪的 IE7 div 调整大小 float 错误?表单按钮保持不变!

javascript - 如何为 Woocommerce 中的变体选项强制设置 "selected"属性?

javascript - HTML5 Canvas toDataUrl - 上传 gif 解决方法

javascript - 以 Angular Testing 函数

javascript - 使用 Ajax Get 方法将数据显示到特定元素

javascript - 根据条件添加 Prop 以 react 组件?

javascript - 如何在 keydown 上使用类名的 div 之间导航?