不确定.on()方法
我使用$.click()
方法来触发一些事件。 但是之后我需要在声明元素之前为某些HTML元素设置一些事件。 我们以此为例:
$('div.hide').click(function() { $('div.hide').css({'display' : 'none'}); }); some text
缺点是在设置div.hide
.click()
方法时, div.hide
元素不存在,因此不设置触发器。
所以我转向.on()
方法,如下所示:
$('div.hide').on('click', function() { $('div.hide').css({'display' : 'none'}); }); some text
但这也行不通。 我认为调用.on()
会使所有存在的和未来的div.hide
元素触发'click' function()
。
我设法克服了这个不便,但据我所知,我想知道我做错了什么。 有没有办法为未来的HTML元素分配触发器?
我的说法是:
$(document).ready( function() { $('div.hide').click(function() { $('div.hide').css({'display' : 'none'}); }); }); some text
你错过了三个版本的版本:
$('body').on('click', 'div.hide', function() { ... });
这会将处理程序放在但它会捕获当目标元素与选择器(第二个参数)匹配时冒泡并调用处理程序的事件。
处理程序不必继续 ; 它可以是
任何父容器元素。
“on”方法取代了旧的“live”和“delegate”方法,以及“绑定”本身。
使用jQuery.live方法为现在和将来与当前选择器匹配的所有元素附加事件处理程序