Web基础之jQuery(二)

事件
* 绑定事件:
1)方式一:bind( type,function(){} )

$('#d1').bind('click',function(){//正式写法,常用于解决浏览器兼容性
        $(this).html('hello java'); 
 });

2)方式二(绑定的简写形式):click( function(){} );

$('#d1').click(function(){//简写形式
  $(this).html('hello java'); 
});

方法:

1)$ele.click():不带任何参数一般是用来指定触发一个事件(手动触发),用的比较少
2)$ele.click( handler(eventObject) ):每次$ele元素触发点击操作会执行回调 handler函数
3)$ele.click( [eventData ], handler(eventObject) ):可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题

其他事件有:
鼠标相关:$ele.mousedown/mouseup/mousemove/mouseover/mouseout
/mouseenter/mouseleave/hover/focusin/focusout/select()
表单相关:blur/focus/change/submit()
键盘相关:keydown/keyup/keypress()
【注意:mouseenter事件只会在绑定它的元素上被调用,而不会在后代节点上被触发;
form元素是有默认提交表单的行为,如果通过submit处理的话,需要禁止浏览器的这个默认行为传统的方式是调用事件对象 e.preventDefault() 来处理, jQuery中可以直接在函数中最后结尾return false即可】
on():多事件绑定,如:$(“#elem”).on(“mouseover mouseout”,function(){ });或不同的事件绑定不同的函数 :

$("#elem").on({
    mouseover:function(){}, 
    mouseout:function(){},
});
//将数据传递到处理程序
function greet( event ) {
  alert( "Hello " + event.data.name ); 
}
$( "button" ).on( "click", {
  name: "ffff"
}, greet );

—>事件委托:.on( events ,[ selector ] ,[ data ], handler(eventObject) )

<div class="left">
    <p class="aaron">
        <a>目标节点</a> //点击在这个元素上
    </p>
</div>

$(“div”).on(“click”,"p",fn)//事件绑定在最上层div元素上,当用户触发在a元素上,事件将往上冒泡,
一直会冒泡在div元素上。如果提供了第二参数,那么事件在往上冒泡的过程中遇到了选择器匹配的元素,
将会触发事件回调函数

off():通过.on绑定事件后,可用.off()移除该绑定。如:$(“elem”).off(“mousedown mouseup”)//移除指定事件;$(‘ele’).off();//移除所有

合成事件
1)hover(enter,leave):模拟光标悬停事件。

$(function(){ $('.s1').hover(function(){ $(this).addClass('s2');//光标进入
},function(){ $(this).removeClass('s2');//光标离开   });
});

2)不使用合成事件的方式。

$('.s1').mouseenter(function(){//鼠标移入
$(this).addClass('s2');//绑定了mouseenter事件的div
  });
    $('.s1').mouseleave(function(){//鼠标移出
$(this).removeClass('s2');
});

3)toggle(function1(){},function2(){},…):模拟光标连续单击事件。

$(function(){
$('a').toggle(function(){
$('#d1').show('slow');},function(){
        $('#d1').hide('slow');
    });
});

事件冒泡

1)概述:子节点产生的事件,会依次向上抛出给相应的父节点。
2)取消冒泡:使用event对象,e.cancelBubble=true;
事件处理:
1)获得事件对象

click(function(e){ //e:对底层的事件对象做了一个封装 });

2)事件对象的属性:
event.type:事件类型
②**event.targe**t:返回事件源(是DOM对象)
event.pageX/pageY:返回点击的坐标
event.which:获取鼠单击时的按下的哪个键⑤event.currentTarget:在事件冒泡过程中的当前DOM元素【注意:this和event.target的区别:js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素;】

3)停止冒泡:event**.stopPropagation()**

4)停止默认行为:event**.preventDefault()**【注意:原来的写法为<a href=”del.do” οnclick=”return false”></a>】

5)模拟操作(自定义事件):
.trigger(‘click’):可传递参数,如;$(‘#elem’).trigger(‘onbindEle’,[‘参数1’,’参数2’])
.triggerHandler():可触发通过jQuery绑定的事件,而不会触发系统事件。且只影响第一个匹配到的元素;
不会向上冒泡,若不是由目标元素直接触发,则不会调用(.trigger与此相反);返回最后一个处理的事件返回值,若没有触发则返回underfined.*

动画
1)show()/hide()
①作用:通过同时改变元素的“宽度”和“高度”来实现显示或隐藏。
②用法:show(速度,[回调函数]); (hide同理)
A.回调函数:整个动画执行完毕之后,会执行该函数。
B.速度:’slow’,’fast’,’normal’ 或者使用毫秒数。slow=600,fast=200,narmal=400
注意:show/hide是修改display的属性,通过visibility属性布局的需要单独设置;若设置了!important,必须使用.css(‘display’,’block !important’)来让show()生效】* .toggle(duration,func):互斥的方法(从右至左,横向动作),相当于:

if ( display === true ) {
  $( "elem" ).show();
} else if ( display === false ) {
  $( "elem" ).hide();
}
可用 .toggle()来替换

2)slideUp()/slideDown()

 ①作用:通过同时改变元素的“高度”来实现显示或隐藏。即上滑/滑动动画
  ②用法:同上。

slideToggle():同toggle(),从上到下,竖向动作。用于slideUp/slideDown()

3)fadeIn()/fadeOut()
①作用:通过改变元素的不透明度来实现显示或隐藏。0透明0.5半透明1不透明(用法同上)
fadeToggle():同toggle(),用于fadeIn/fadeOut
fadeTo(duration,opacity,callback):指定透明度变化的目标值opacity.

4)自定义动画animate(params,speed,[callback])
①params:是一个JavaScript对象,描述动画执行结束之后元素的样式,比如:{‘height’:’200px’}
②speed:速度,只能用毫秒数。
③callback:回调函数。

$aaron.animate({
      width  : “+=100px”,//或者width: “toggle"    width  : "+=100px"
      fontSize: “5em”,
      opacity: 'show', //或者: opacity: ‘0.5', 
   });

.animate(properties,options):可观察动画的一些执行情况,或在动画进行中的某一时刻进行一些其他处理。参数:

  • duration - 设置动画执行的时间
  • easing - 规定要使用的 easing 函数,过渡使用哪种缓动函数
  • step:规定每个动画的每一步完成之后要执行的函数
  • progress:每一次动画调用的时候会执行这个回调,就是一个进度的概念
  • complete:动画完成回调
$aaron.animate({height: '50'}, {
                duration :2000,
                //每一个动画都会调用
                step: function(now, fx) {
                   $aaron.text('高度的改变值:'+now)     
                }          
})
 $aaron.animate({ height: '50'}, {
                duration :2000,
                //每一步动画完成后调用的一个函数,
                //无论动画属性有多少,每个动画元素都执行单独的函数
                progress: function(now, fx) {
                   $aaron.text('进度:'+arguments[1])            
                 }
 })

stop():停止当前动画;

  • .stop(true):如果同一元素调用多个动画方法,尚未被执行的动画被放置在元素的效果队列中。这些动画不会开始,直到第一个完成。
  • .stop(true,true):当前动画将停止,但该元素上的 CSS 属性会被立刻修改成动画的目标值

类数组的操作
jQuery对象里面可能包含多个DOM对象,所谓类数组,指的就是这些DOM对象。
1)each(function(i)):循环遍历每一个元素,this代表被遍历的DOM对象,$(this)代表被迭代的jQuery对象,i代表正在被遍历的那个对象的下标。下标从0开始。
如:$obj.each(function(i){//i:表示正在被遍历的那个节点的下标,下标从0开始
2)eq(index):返回index位置处的jQuery对象。
3)index(obj):返回下标,其中obj可以是DOM对象或者jQuery对象。
4)length属性:获得jQuery对象包含的DOM对象的个数。
5)get():返回DOM对象组成的数组。
6)get(index):返回第index个DOM对象。支持负索引值,即从后向前开始
7)inArray(value,array,[fromIndex]):在数组中查找是否存在,并可指定起始位置;返回value在array中的索引,没有则返回-1.
8)trim():同java中的trim(),用于去空格。

数据存储
主要是针对HTML5 dataset的简化操作。
1) $.data(element,’key’,’value’):静态接口,存数据
2) $.data(element,’key’):静态接口,取数据
3) ele.data(‘key’,’value’):实例接口,存数据
4) ele.data(key):实例接口,取数据

将JavaScript与HTML分开
目的是使用行为与数据分开。

博客地址:Web基础之jQuery(二)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值