您将事件处理程序绑定到页面加载时存在的元素。
以后添加的元素必须在那时绑定。
另一种方法是利用事件委托。 jQuery有2种委派方法,.live()和.delegate()。
这些方法的作用是处理程序不绑定到有问题的元素,而是绑定到某个容器。当click事件冒泡到容器时,jQuery会检查单击的元素是否与您给它的选择器匹配,如果是,则触发处理程序。
将它想象成这样:
$('.item').click(function() { /* do something */ });
这样绑定:
click me
click me
click me
但是这个:
$('.Container').delegate('.item','click', function() { /* do something */ });
这样绑定:
click me
click me
click me
因此,如果您向.item添加其他.Container元素,它们就可以正常工作,因为处理程序会在.Container内处理所有点击。
click me
click me
click me
click me
click me
因此,新项目上的点击事件就像原始项目一样。
.live()方法与.delegate()方法的工作方式相同。它只使用document作为默认容器,这意味着它必须处理页面上的所有点击。
因此,我更喜欢.delegate()。