淘先锋技术网

首页 1 2 3 4 5 6 7

在使用jQuery编写网页时,我们经常需要动态加载、修改元素。但是在一些情况下,我们会遇到一些不能动态加载、修改的元素,这些元素可能是在网页初次加载时就已经存在的。


//例如,下面这段代码
$(document).ready(function(){
   $('ul li').click(function(){
      alert('clicked!');
   });
});

//在网页中会将所有ul标签下的li标签的点击事件绑定为弹出一个"clicked!"的提示框。
//然而,如果在这个代码之后再通过ajax请求动态加载了一些li标签,这些标签的点击事件并不会响应。

jquery未动态加载的元素

这是因为在文档准备就绪后,jQuery只会对已经存在的元素绑定事件。而新增的元素并不在jQuery的掌控之下,无法响应已经绑定的事件。

为了解决这个问题,我们可以使用jQuery中的on()方法。这个方法可以在父级元素上绑定事件,而不是直接在子元素上绑定。当子元素发生事件时,事件会从子元素冒泡到父级元素,然后再由父级元素响应这个事件。这样,新增的元素也能够响应已经绑定的事件了。


//修改之前的代码如下
$(document).ready(function(){
   $('ul li').click(function(){
      alert('clicked!');
   });
});

//修改后的代码如下
$(document).ready(function(){
   $('ul').on('click', 'li', function(){
      alert('clicked!');
   });
});

//在这段代码中,我们将click事件绑定在ul标签上,当ul标签内的子元素li被点击时,事件会从子元素冒泡到父级元素ul,然后再被响应。

通过on()方法,我们可以让动态加载的元素也能够响应我们已经绑定的事件了。