您当前的位置: 首页 >  jquery

梁同学与Android

暂无认证

  • 3浏览

    0关注

    618博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

jQuery-给ul添加了li之后,添加的li并没有绑定点击监听怎么办?

梁同学与Android 发布时间:2020-03-03 13:09:33 ,浏览量:3

我们看一个简单的例子

效果图如下 这里面有一个ul里面套着4个li,还有一个独立的li 在这里插入图片描述 代码实例: 需求 1.点击li,背景就会变成红色 2.点击btn,就会添加一个li


  
    
    
    My JSP 'practice_02.jsp' starting page
    
	
	
	    
	
	
	
  
  
  	
  	
  		111
  		222
  		333
  		444
  	
  	222
  	
  	添加一个li
  	
	
		//1.点击li,背景就会变成红色
		$('ul>li').click(function() {
			//第一种写法
			this.style.background = 'red';
			//第二种写法          $(this).css('background','red');
		});
		
		//2.点击btn,就会添加一个li
		$('#btn').click(function() {
			$('ul').append('
  • 222
  • '); });

    效果如下: 我们会发现,添加之后的li点击了没有变化,说明添加之后的li并没有绑定点击监听 在这里插入图片描述

    解决方法一(普通方法):

    
      
        
        
        My JSP 'practice_02.jsp' starting page
        
    	
    	
    	    
    	
    	
    	
    	
    	
     	
      
      
      	
      	
      		111
      		222
      		333
      		444
      	
      	222
      	
      	添加一个li
      	
    	
    		//1.点击li,背景就会变成红色
    		$('ul>li').click(function() {
    			//第一种写法
    			this.style.background = 'red';
    			//第二种写法          $(this).css('background','red');
    		});
    		
    		//2.点击btn,就会添加一个li
    		$('#btn').click(function() {
    			$('ul')
    			.append('
  • 222
  • ')//这里我们会发现,当我们添加了一个li之后,点击它背景颜色并不会改变 .children('li')//找到ul的孩子li .click(function() {//添加点击事件 this.style.background = 'red'; }); });

    方法二(事件委托):

    1.简单讲解

    (1)事件委托(代理/委派): ->将多个子元素(li)的事件监听委托给父辈元素(ul)处理 ->监听回调是加在了父辈元素上 ->当操作任何一个子元素(li)时,事件会冒泡到父辈元素(ul) ->父辈元素不会直接处理事件,而是根据event.target得到发生事件的子元素(li),通过这个子元素调用事件回调函数 (2)事件委托的双方

    ->委托方: 业主li ->被委托方: 中介ul

    (3)使用事件委托的好处

    ->添加新的子元素,自动有事件响应处理 ->减少事件监听的数量

    (4)jQuery事件委托API

    ->设置事件委托:$(parentSelector).delegate(childrenSelector,eventName,callback)

    ->移出事件委托:$(parentSelector).undelegate(eventName)

    2.代码实例

    
      
        
        
        My JSP 'practice_02.jsp' starting page
        
    	
    	
    	    
    	
    	
    	
    	
    	
     	
      
      
      	
      	
      		111
      		222
      		333
      		444
      	
      	222
      	
      	添加一个li
      	
    	
    		//1.点击li,背景就会变成红色
    		$('ul>li').click(function() {
    			//第一种写法
    			this.style.background = 'red';
    			//第二种写法          $(this).css('background','red');
    		});
    		
    		//2.点击btn,就会添加一个li
    		$('#btn').click(function() {
    			$('ul').append('
  • 222
  • '); }); //事件委托 $('ul').delegate('li','click',function() { this.style.background = 'red'; });

    3.效果 请读者复制代码自行测试 在这里插入图片描述

    关注
    打赏
    1660730345
    查看更多评论
    立即登录/注册

    微信扫码登录

    0.1765s