美文网首页
事件代理——jQuery.bind()方法

事件代理——jQuery.bind()方法

作者: _____西班木有蛀牙 | 来源:发表于2018-04-23 09:22 被阅读6次

首先是样式美化(仅仅是为了好看):

ul {
    margin: 0;
    padding: 0;
    font-size: 0;
}

li {
    display: inline-block;
    font-size: 15px;
    width: 50px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    cursor: pointer;
    border-radius: 20%;
    transition: border-radius 1s, background-color .5s, color .5s;
}

li:hover {
    background-color: rgba(0,0,0,.3);
    border-radius: 50%;
    color: #fff;
}

html内容(一个容器,加上id方便js选取):

<ul id="ul"></ul>

这里我们使用artTemplate做数据的渲染:

<script type="text/javascript" src="js/template-web.js" ></script>
<script type="text/template" id="tpl">
    <% for(var i = 0; i < 9; i++){ %>
        <% if (i<num) { %>
            <li><%= i %></li>
        <% } else { %>
            <li><%= i %></li>
        <% } %>
    <% } %>
</script>

注意引入template-web.js
将模板书写到script标签里面,注意:type="text/template"

// 定义一个方法
/*
 * pr 代理事件的父级容器
 * ch 绑定时间的子元素
 * data 需要传入的数据
 * fn 回调
 */
function bind (pr, ch, data, fn) {
    document.getElementById(pr).addEventListener('click', function (event) {
        if (event.target.localName === ch) {
            fn.call(event.target, da)
        }
    })
}
// 1.先绑定时间
bind('ul', 'li', {name:'张三'}, function (d) {
    console.log(d, this.innerHTML)
})

// 定义要数据
var da = {
    num: 5
}

// 用模板生成字符串
var html = template('tpl', da);
// 在容器`ul`中插入元素
document.getElementById('ul').innerHTML = html;

在上面的代码中,我们先将事件绑定,在通过模板拼接字符串,在页面中插入元素

如果不通过事件代理的方式直接通过绑定事件

document.getElementById(''ul).addEventListener("click", function () {
  console.log(123);
})
// 或者
document.getElementById(''ul).onclick = function () {
  console.log(123);
}

再之后插入的元素 是没有click事件的。

相关文章

  • 事件代理——jQuery.bind()方法

    首先是样式美化(仅仅是为了好看): html内容(一个容器,加上id方便js选取): 这里我们使用artTempl...

  • 无标题文章

    每个控件会有多种不同的代理方法,控件上发生不同的事件会触发不同的代理方法,代理方法是事件发生后做一些自定义处理的,...

  • tableview与tap手势点击事件冲突

    手势设置代理,实现shouldReceiveTouch代理方法,对事件接受对象进行处理

  • iOS协议实例

    案例:给tableView的分组视图的点击事件做协议代理 1、先声明协议和方法 2、设置协议代理 3、视图点击事件...

  • 给动态添加的dom绑定事件,没有触发的原因

    1.事件没有绑定成功 解决方法:可以在生成dom之后再去绑定事件 2.事件委托/事件代理

  • 深入理解DOM事件机制

    前言 本文主要介绍: DOM事件级别 DOM事件流 DOM事件模型 事件代理 Event对象常见的方法和属性 一、...

  • iOS-彩票小项目

    项目涉及知识点:自定义UITabbar代理事件(点击代理方法做出响应)设置UINavigationControll...

  • iOS开发实用技巧篇(实际项目)

    TableView 空白处点击做出处理: 1.给TableView添加点击事件 2.遵循代理方法 3.实现代理方法...

  • didSelectRowAtIndexPath 代理方法不走

    今天修改一个tableview,之前不需要处理点击事件,现在需要加载一个点击事件,但是发现代理方法不走。 检查代理...

  • 第二十天web前端面试题

    1,什么是事件代理且描述事件代理的原理及为什么要用事件代理? 事件委托也叫事件代理。利用事件冒泡,让自己的触发的事...

网友评论

      本文标题:事件代理——jQuery.bind()方法

      本文链接:https://www.haomeiwen.com/subject/wvlklftx.html