【学习笔记三】- 动态添加元素绑定事件函数测试

写在前面:

这是昨天校招参加一个笔试的时候遇到的题,百度了一下之后自己写了一个简单的测试。

 

首先简单说一下动态添加,因为楼主智障,开始的时候没有通过button按钮绑定click事件,直接在js中用三种方法添加了三个<li>,结果不论用什么方法绑定都能成功,一下脑子没转过来顿时就懵逼了。

所以我理解的动态应该是通过用户操作添加的元素,而不是一开始页面加载完就有的。

 

然后是绑定方法,现在通过jQuery添加元素的方法大致如下:

1、不能绑定动态添加的元素的方法

$('...').click(function(event){

if($(event.target).is('a')){alert($(this).text())}
})

$('...').bind(event,function(){})
2、可以给动态添加的元素绑定事件的方法:

据说不同jQuery版本的使用方法情况是这样

Query 1.3-1.4.2 用.live('click',func)
1.4.2-1.7 用.delegate('li','click',func)

1.7后 用.on('click','li',func)

我没有去下之前的版本测试,自己用的是3.2.1,就直接用的on方法

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>绑定动态添加元素</title>
	<script type="text/javascript" src="../jquery-3.2.1.js"></script>
	<script type="text/javascript">
	$(document).ready(function() {
		$('#btn').click(function appendLi(){
			//以html创建新元素
			var lic='<li id="c">something3</li>';
			//用jQuery创建新元素
			var lid=$('<li id="d">something4</li>');
			//用DOM创建新元素
			var lie=document.createElement('li');
			var text=document.createTextNode('something5');
			lie.setAttribute('id','e');
			lie.appendChild(text);
			//添加元素
			$('ul').append(lic,lid,lie);
		});
			$('#c').click(function(){  
			    alert( $(this).text() );  
			});  //id为c的li未绑定成功
			
			$('ul').on('click','#d',function(){  
			    alert( $(this).text() );  
			});  //id为d的li绑定成功

			$('li').bind('mouseover',function(event) {
				$(this).css('color','#ccc')
			});	//动态添加的cde未绑定成功,原有的ab绑定成功

			$('li').mouseleave(function(event) {
				$(this).css('color','black')
			});	//动态添加的cde未绑定成功,原有的ab绑定成功
	});
	</script>
</head>
<body>
	<div id='test'>
		<ul>
			<li id='a'>something1</li>
			<li id='b'>something2</li>
		</ul>
	</div>
	<button id='btn'>add li</button>
</body>
</html>动态添加的cde未绑定成功,原有的ab绑定成功
	});
	</script>
</head>
<body>
	<div id='test'>
		<ul>
			<li id='a'>something1</li>
			<li id='b'>something2</li>
		</ul>
	</div>
	<button id='btn'>add li</button>
</body>
</html>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值