JavaScript--------------------jQuery中.bind() .live() .delegate() .on()的区别 和 三种方式写光棒事件 动画

bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数。

$("a").bind("click",function(){alert("ok");});

live(type,[data],fn) 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的

$("a").live("click",function(){alert("ok");});

delegate(selector,[type],[data],fn) 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数

$("#container").delegate("a","click",function(){alert("ok");})

on(events,[selector],[data],fn) 在选择元素上绑定一个或多个事件的事件处理函数

差别:

.bind()是直接绑定在元素上

.live()则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。

.delegate()则是更精确的小范围使用事件代理,性能优于.live()

.on()则是最新的1.9版本整合了之前的三种方式的新事件绑定机制

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一.用三种方式写光棒效果

(1):js批量注册this的说法

当通过循环的方式注册事件的时候,在匿名函数的方法体中,必须使用this代表当前对象,不能使用数组名[i](对象名)。

js设置样式的两种方案:

1.this.style.属性名=“属性值”;

如果属性名:

background-color--------->backgroundColor

font-size---------->fontSize

2.this.style.cssText="属性名:属性值;font-size:50px"

eg:

 1 <script type="text/javascript" src="jq/jQuery1.11.1.js"></script>
 2     <script type="text/javascript">
 3  //用js的光棒效果
 4         /*  $(function(){
 5              var hu=document.getElementsByTagName("li");
 6              for(var i=0;i<hu.length;i++){
 7                  hu[i].onmouseover=function(){
 8                      //js方式设计样式  方式一 this.style.属性名=属性值。
 9                      //this.style.background="red";
10                     // this.style.fontSize="40px";
11                      //方式二:this.style.cssText="属性名:属性值"
12                      this.style.cssText="background:pink;font-size:50px;";
13                  };
14
15                  hu[i].onmouseout=function(){
16                      //方式一:
17                      this.style.background="";
18                      this.style.fontSize="20px";
19                      //方式二:
20                     // this.style.cssText="background:;font-size:20px;";
21                  };
22              }

(2)用jq的两种方法:

 1 <script type="text/javascript" src="jq/jQuery1.11.1.js"></script>
 2     <script type="text/javascript">
 3  //用js的光棒效果
 4         /*  $(function(){
 5              var hu=document.getElementsByTagName("li");
 6              for(var i=0;i<hu.length;i++){
 7                  hu[i].onmouseover=function(){
 8                      //js方式设计样式  方式一 this.style.属性名=属性值。
 9                      //this.style.background="red";
10                     // this.style.fontSize="40px";
11                      //方式二:this.style.cssText="属性名:属性值"
12                      this.style.cssText="background:pink;font-size:50px;";
13                  };
14
15                  hu[i].onmouseout=function(){
16                      //方式一:
17                      this.style.background="";
18                      this.style.fontSize="20px";
19                      //方式二:
20                     // this.style.cssText="background:;font-size:20px;";
21                  };
22              }

二: 动画

1.

(1)show()将元素display样式设置为先前的显示状态(block,inline);hide()将display样式设置为none,导致隐藏。

可以加参数fast,slow,normal,时间整数(毫秒)。

(2)fadeOut()改到透明度到消失,fadeIn()相反。

(3)slideDown()向下显示,slideUp()向上隐藏。

(4)animate(params,speed,callback)自定义动画,params为样式如{property1:"value1",property2:"value2"}

speed速度,可选;callback动画执行完执行的函数,可选。

eg:

$(‘input‘).bind(‘click‘, function () {      if ($(this).is(‘:visible‘)) {//如果内容为显示       $(this).hide();      } else {       $(this).show();      }     })

2.切换元素可见状态(toggle())

 1 #panel
 2 {
 3     position:relative;
 4     width:100px;
 5     height:300px;
 6     border:1px solid #0050D0;
 7     background:#96e555;
 8     cursor:pointer;
 9 }
10 html代码:
11 <div id="panel"></div>
12 jQuery代码:
13 $("#panel").click(function () {
14     $(this).animate({ left: "+=500px" }, 3000) //累计从左移动,先执行
15     .animate({ height: "-=100px" }, 2000) //累计减少高度,后执行
16     .animate({ opacity: "0.5" }, 3000)//透明度降低到0.5
17     .fadeOut("slow", function () { //动画都可以带有回调函数
18         $(this).css("display", "block");   //显示,css方法不加入到动画队列,因此在callback中
19         $(this).animate({ opacity: "1" }, 3000); //改变透明度
20     });
21 });

(1)+=和-=可以累计改变属性的值,如果直接写数字则改变一次。

(2)animate中的left是从左,top是从上;

(3)css()方法不会加入到动画队列,而是立即执行。

(4)将多个属性放到animate中会同时执行这些动画。

3,停止动画和判断是否正在动画

(1)stop[clearQueue][gotoEnd]);可选参数,true或false;clearQueue是否要清空未执行的动画队列;gotoEnd代表

是否直接跳转到 当前动画 的末状态。 如果直接使用stop()就停止当前正在进行的动画,后面的动画继续。

(2)hover(enter,leave)是鼠标悬停事件,进入执行enter,出来执行leave;下面的例子防止动画效果与鼠标不一致:

如果有多个动画,想在enter时停止,可以将参数clearQueue设为true ,像这样stop(true)

stop(false,true)让当前动画直接到末状态。

stop(true,true)让当前动画直接到末状态,并清空动画队列。

(3)判断是否处于动画状态

(4)延迟动画  delay(1000)  延迟1秒。

简单动画:

<script type="text/javascript" src="jq/jQuery1.11.1.js"></script>
    <script type="text/javascript">
    //简单动画
      $(function(){
            //$("img").show(5000,playDog);
            //$("img").fadeIn(5000,playDog);
            $("img").slideDown(5000,playDog);
        });
        function playDog(){
            alert("will is power");
        }
</script>
  </head>    

  <body>
     <img src="img/1.jpg" style="width:100px; height:100px;display:none;"></img>
  </body>

时间: 2024-10-02 18:56:31

JavaScript--------------------jQuery中.bind() .live() .delegate() .on()的区别 和 三种方式写光棒事件 动画的相关文章

jQuery中 .bind() .live(). delegate() . on() 的区别

jQuery中   .bind()    .live().   delegate() .   on()  的区别 这几种方法都是绑定事件用到的,但是他们之间有些差别 bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数 例如: <ul> <a href="#"><li>1111111</li></a> <a href="#"><li>22222</

jquery中bind,live,delegate,on的区别

这几种方法都是绑定事件用到的,但是他们之间有些差别 bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数 例如: <ul> <a href="#"><li>1111111</li></a> <a href="#"><li>22222</li></a> <a href="#"><li>33

jQuery中.bind() .live() .delegate() .on()的比较

bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数 live(type,[data],fn) 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的 delegate(selector,[type],[data],fn) 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数 on(events,[selector],[data],fn) 在选择元素上绑定一个或多个事件的事件处理函数 差别: .bind()是直

jQuery中bind方法和live方法区别解析

Javascript中的事件有它的独特性,有默认的执行事件,例如冒泡就是其中的一个.在很多比较复杂的应用程序中,停止事件的冒泡或捕获在程序开发当中是十分有用的,而在IE中有它的独特方式来阻止事件的冒泡(和其它浏览器方式不同). 以下给出一种通用的方式来实现阻止事件的冒泡,该通用方式接受一个参数[传递到事件处理程序中的事件对象],该函数处理取消事件冒泡的两种方式:标准的W3C方式和非标准的IE方式: 什么是事件冒泡[又称为事件传播]:当我们点击一个元素时,它会触发bind在该元素上的click事件

谈 jquery中.band() .live() .delegate() .on()的区别

bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数 $("a").bind("click",function(){alert("ok");}); live(type,[data],fn) 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的 $("a").live("click",function(){alert("ok");}); del

监视EntityFramework中的sql流转你需要知道的三种方式Log,SqlServerProfile, EFProfile

大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们 无法控制sql的生成策略,所以必须不要让自己缺乏好的工具去监控sql,本篇给大家介绍的三种监控手段Log和SqlServer profile,ef profile... 一:Log监控 这个属于entity framework自带的一个Action方法,它给大家带来了不错的用户体验,我们可以将其输出放到控制台,又或者写入到记事本中...这

监视EntityFramework中的sql流转你需要知道的三种方式Log,SqlServerProfile, EFProfile

大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们 无法控制sql的生成策略,所以必须不要让自己缺乏好的工具去监控sql,本篇给大家介绍的三种监控手段Log和SqlServer profile,ef profile... 一:Log监控 这个属于entity framework自带的一个Action方法,它给大家带来了不错的用户体验,我们可以将其输出放到控制台,又或者写入到记事本中...这

转 jQuery 中bind(),live(),delegate(),on() 区别

当我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的.而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢? 准备知识: 当我们在开始的时候,有些知识是必须具备的: DOM树 下图仅仅是一个示例,这是一个在browser环境下的一棵模拟DOM树,在下面的代码中仅起到演示的作用: Event bubbling (aka event propagation)冒泡 我们的页面可以理解为一棵DOM树,当我们在叶子结点上做什么事情的时候(如click一个a元素),如果我们不

jquery实现input输入框实时输入触发事件代码 ---jQuery 中bind(),live(),delegate(),on() 区别

复制代码 代码如下: <input id="productName" name="productName" value="" /> 复制代码 代码如下: //绑定$('#productName').bind('input propertychange', function() {searchProductClassbyName();}); 复制代码 代码如下: searchProductClassbyName 为触发后调用的方法: 当