
可以用js的事件委托啊。
比如你的分页生成的代码会插入到一个<div id="pager"></div>里,在生成html片段时为a设置一个属性用来表示页数,如:<a href="#" data-page="1">第1页</a>
事件委托的js代码如下:
$('#pager').delegate('a', 'click', function(e){
e.preventDefault() //阻止a的默认事件
var page = $(this).data('page') //从当前a标签属性中取出页码
//处理分页,如果是跳转:
location.href = "/pagename.php?page=" + page
//如果是异步取分页数据:
var page_api = '/pagedata.php?page=' + page
$.get(page_api, function(data, textStatus, jqXHR){
//使用ajax获取数据
//拼装数据并填充到数据显示区:
$('#list-container').append( createHTML(data) )
//重新生成分页区
createPager( page )
})
})
function createHTML(data){
//拼装数据的函数
}
function createPager(curPage){
//生成分页的函数
var tpl = '<a href="#" data-page="{#index}">第{#index}页</a>'
//...
}
var ios = document.getElementsByTagName("input")for(var i = 0i <ios.lengthi++){
ios[i].onclick=function(){
alert(this.value)
}
}
.live()背后神奇的地方就在于它并不将事件绑定到你选定的elements上,而实际上是绑定到了DOM树的跟节点,而是在element中就像一个参数一样进行传递。那么当你点击一个元素时,事件就会在DOM树上往上传递,直至到达根节点。这个事件的触发器已经在根节点被.live()创建。这个触发方法将首先检测被点击的目标看是否和.live()调用的选择器相匹配。如果匹配,那么绑定的方法就会执行了。
因为不管你在根节点内点击了什么,根节点的事件都会被触发,当你点击加入到根节点的任何元素时这个检查都会发生。
比如你要给一个还没有添加在页面中的id为“ABC”元素添加click事件。
实际上你要给document元素添加click事件。
并且在document的click回调函数中,判断事件源event.target。然后判断它的ID是“ABC”则执行相应的事件函数。类似这样。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)