最近使用jQuery操作浏览器获取数据,需要对分页的信息进行处理,发现直接使用$('div#pager a.next').click();的这种写法无法触发点击事件。
使用trigger('click')的写法也是无济于事。
在网上一顿扒拉后,发现使用$('div#pager a.next')[0].click();就OK了。
$('div#pager a.next')[0]这种写法其实就相当于把jQuery对象转换为Dom对象了。
模拟点击不生效的原因
如果使用jQuery的写法:$('a#test').click(function(){alert('ok')});为元素绑定了click事件,那么使用$('a#test').click()是可以生效的,如果没有绑定click事件,当点击a#test的时候事件通过冒泡会传给父级的节点,父级节点会处理点击事件(跟我遇到的分页的情形是一样的),那么这时就需要模拟DOM点击了,也就是通过$('a#test')[0].click()去触发。