首页 > 网站 > WEB开发 > 正文

live()方法用法详解

2024-04-27 14:07:01
字体:
来源:转载
供稿:网友

live()方法用法详解

live()方法用法详解:

此方法的在jQuery中使用率相当高,并且具有独特的特点,且从其语法结构上不能够看出此方法的独特之处,下面就通过实例详细介绍一下次方法的用法。先看一段代码实例:

<!DOCTYPE html><html><head><meta charset=" utf-8"><meta name="author" content="http://www.softwhy.com/" /><title>蚂蚁部落</title><style type="text/CSS">span{  color:green;  font-size:12px;}</style><script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script><script type="text/Javascript"> $(document).ready(function(){   $("div").live("click",function(){     $("span").text("太阳出来了");   }) }) </script></head><body><div>蚂蚁部落</div><span></span></body></html>

以上代码中,当点击div的时候会执行一个事件处理函数,为span元素设置文本内容,就像jQuery API手册开头所说,此方法可以为匹配元素附加一个事件处理函数,但是事实并非如此,事件处理函数并没有被绑定匹配的div元素上,而是被绑定到了DOM树的顶层document上,任何时候只要有事件冒泡到document节点上,它就查看该事件是否是一个click事件,以及该事件的触发元素是否为div,如果条件满足的话,就执行附加的事件处理函数。live()方法的实现方式其实就是事件委托,对于提高代码的执行效率有着很大的帮助。当然事件处理方法并非只能帮顶到document元素上,可以人为的指定要绑定的DOM元素。代码实例如下:

<!DOCTYPE html><html><head><meta charset=" utf-8"><meta name="author" content="http://www.softwhy.com/" /><title>蚂蚁部落</title><style type="text/css">span{  color:green;  font-size:12px;}</style><script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script><script type="text/javascript"> $(document).ready(function(){   $("p",$("#myul")[0]).live("click",function(){     $("span").text("太阳出来了");   }) }) </script></head><body><div>  <ul id="myul">    <li>      <p>蚂蚁部落</p>    </li>  </ul></div><span></span></body></html>

以上代码将事件处理函数绑定于ul上,而非绑定在document上。

对于新添加的元素也是有效的:

在实际应用中,可能需要根据条件添加新的元素,live()方法对新添加的匹配元素也是有效的。代码实例如下:

<!DOCTYPE html><html><head><meta charset=" utf-8"><meta name="author" content="http://www.softwhy.com/" /><title>蚂蚁部落</title><style type="text/css">span{  color:green;  font-size:12px;}</style><script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script><script type="text/javascript"> $(document).ready(function(){   $("div").live("click",function(){     $("span").text("太阳出来了");   })   $("button").click(function(){     $("span").after("<div>新添加的元素</div>");   }) }) </script></head><body><div>蚂蚁部落</div><span></span><button>添加新元素</button></body></html>

点击新添加的div元素依然能设置span元素中的文本内容,所以live()方法对于新添加的元素也是有效的,这一点bind()不能做到。event.stopPRopagation()不能阻止live()的事件冒泡:

<!DOCTYPE html><html><head><meta charset=" utf-8"><meta name="author" content="http://www.softwhy.com/" /><title>蚂蚁部落</title><style type="text/css">span{  color:green;  font-size:12px;}</style><script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script><script type="text/javascript"> $(document).ready(function(){   $("p").live("click",function(e){     e.stopPropagation();     $("span").text("太阳出来了");   }) }) </script></head><body><div>  <ul id="myul">    <li>      <p>蚂蚁部落</p>    </li>  </ul></div><span></span></body></html>

由以上代码可以看出e.stopPropagation()并没有阻止事件处理函数的执行,所以并没有阻止事件冒泡。

原文地址是:http://www.51texiao.cn/javascriptjiaocheng/2015/0428/327.html

最为原始地址是:http://www.softwhy.com/


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表