原生js和jquery实现元素绑定,给li添加绑定

1、绑定事件

 // 原生javascript绑定事件
 // 1️⃣
 	function addHandler(targetObj, event, func)
    {
        if (targetObj){
            if (targetObj.addEventListener) {
            	targetObj.addEventListener(event, func, false)
            }
            else if (targetObj.attachEvent){
            	targetObj.attachEvent("on" + event, func)
            }
            else targetObj["on" + event] = func;
        } 
    }
    addHandler(element,"change",function(){})
// 2️⃣ 
	element.onchange = function() {}
// 3️⃣ 在DOM元素上调用onChange方法
	<input type="text" id="email" name="email" onchange="emailHandle()">
	function emailHandle() {}
// jquery绑定事件
// 1️⃣ 直接调用change事件
element.change(function(){})
// 2️⃣ 使用绑定方法on,给元素绑定change事件
element.on("change", function(){})

绑定方法on,之前遇到过一种场景,在使用jquery的老项目中,需要给一个之后添加的DOM元素绑定一个事件,因为元素还未存在不能给元素绑定事件,所以只能通过已存在的父元素给其绑定事件。还有种情况,当给很多相同的元素添加事件,比如说li,最好是通过事件委托,委托给父级元素,减少性能的消耗

比如:点击button,给ul添加li元素,同时给li元素绑定点击事件

	<ul></ul>
	<button class="addLi">add</button>
	-----------------------------------------------------
	$(".addLi").click(function(){
		$("ul").append("<li>"+new Date()+"</li>")
	})
	$("ul").on("click", "li", function(){
		alert($(this).text())
	})
// 直接使用$("li").click(function(){alert($(this).text())})是不能触发点击事件的
// 给li添加click事件时,li还未存在,并不能绑定上
	----------------------------------------------------
	var ul = document.getElementsByTagName("ul")
	var btn = document.getElementsByClassName("addLi")
	// button添加li元素
	btn[0].onclick = function(){
		var li = document.createElement("li")
		var liText = document.createTextNode(new Date())
		li.appendChild(liText)
		ul[0].appendChild(li)
	}
	// li元素click事件
	ul[0].addEventListener("click", function(event){
		var target = event.target
		if(target.nodeName == "LI"){
			alert(target.innerText)
		}
	})

`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值