我正在使用 $.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/