原生js如何绑定a连接点击事件?

 我来答
Tonewme
推荐于2019-11-01 · TA获得超过258个赞
知道答主
回答量:10
采纳率:85%
帮助的人:9.5万
展开全部

可以用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>';

//...
}

百度网友b4b3392
2018-01-09 · TA获得超过225个赞
知道答主
回答量:1
采纳率:100%
帮助的人:392
展开全部
  1. var obj = document.getElementById("p"); obj.addEventListener("click",function(ev){ var target = ev.target; if(target.className.indexOf(box氦孩份绞莓悸逢溪抚娄9;)!==-1){return target;}这种情况下,

  2. 点击的就是box元素,比如box里面有个padding的值,返回的就是自己。

  3. if(target == obj){return false;}这种情况下,点到的是box与box之间的空隙,比如box有个margin-bottom:20px

  4. 返回false while(target.className.indexOf(box) === -1){ target = target.parentNode; } return target;返回的target即是你要的box元素 })

  5. 如果可以用jquery,直接用代理很少的代码就可以实现,如果用原生的话,可能就要写这么一堆代码了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式