ajax传向前台的html代码里又有事件的时候,绑定事件失败解决方法

为动态添加的元素绑定事件有以下几种方式:

1.delegate():向匹配元素的当前或未来的子元素附加一个或多个事件处理器

$(selector).delegate(childSelector,event,data,function)

目前大多数jquery版本都可用,不过我一般不用它。

[javascript] view plain copy
  1.  $("#searchMoveVideoResult").delegate("ul li","click",function(){  
  2.     $(this).css("border","5px solid #000");  
  3. });  
[javascript] view plain copy
  1. $("#searchMoveVideoResult").delegate("click","ul li",function(){  
  2.     $(this).css("border","5px solid #000");  
  3. });  
看出它们的不同了吗,第二种写法是错误的,记住一定要把事件写在元素的后面。


2.live():为当前或未来的匹配元素添加一个或多个事件处理器

$(selector).live(event,data,function)

jquery1.8版本以前推荐使用该方法;jquery1.8版本之后就不建议使用了,我试了下,也是无效的,所以高版本的jquery推荐使用on()方法绑定事件。

[javascript] view plain copy
  1. $("#searchMoveVideoResult ul li").live("click",function(){  
  2.      $(this).css("border","5px solid #000");  
  3. });  


3.on():适用于当前及未来的元素(比如由脚本创建的新元素)
$(selector).on(event,childSelector,data,function,map)



试验了下,大多数版本的jquery都是支持这个方法的,也是我比较喜欢使用的方法。


  1. $("#searchMoveVideoResult").on("click","ul li",function(){  
  2.     $(this).css("border","5px solid #000");  
  3. });  

  1. //下面这样写就是错的了,一定要把动态添加的元素放到on()方法里面才行。</span>  

  1. $("#searchMoveVideoResult ul li").on("click",function(){  
  2.     $(this).css("border","5px solid #000");  
  3. });  

4. onclick事件: 动态添加数据时,就为元素绑定onclick事件

  1. function searchMoveVideo(){  
  2.     $.ajax({  
  3.         type:"POST",  
  4.         url:"http://op.juhe.cn/onebox/movie/video",  
  5.         data:{"q":$("#moveVideo").val(),"key":"346f79df993776748b242236464d565d"},  
  6.         dataType:"JSONP",  
  7.         success:function(data){  
  8.             console.log(data);  
  9.             if(data.error_code=="0"){  
  10.                 var result=data.result;  
  11.                 console.log(result);  
  12.                 var html=result.title+"<br>"+result.tag+"<br>"+result.act+"<br>"+result.year+"<br>"                                          +result.area+"<br>"+result.dir+"<br>"+result.desc;  
  13.                 html+="<br><img src='"+result.cover+"'/><br>";  
  14.                 html+='<ul style="list-style: none; float: left;">';  
  15.                 var act_s=result.act_s;  
  16.                 for(var i=0;i<act_s.length;i++){  
  17.                     html+='<li style="float: left;" <span style="color:#cc0000;">οnclick="showSource(this);"</span>><a target="_bla                                                nk"><img src="'+act_s[i].image+'"><br>'+act_s[i].name+'</a></li>';  
  18.                 }  
  19.                 html+='</ul>'  
  20.                 $("#searchMoveVideoResult").html(html);  
  21.             }else{  
  22.                 $("#searchMoveVideoResult").html(data.reason);  
  23.             }  
  24.         }  
  25.     });    } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值