python 之 前端开发( jQuery事件、动画效果、.each

系统 1343 0
11.58 事件
11.581 事件绑定方法与解绑

绑定事件:

            
              //
            
            
               绑定方式一:
            
            
$('.box1').click(
            
              function
            
            
               () {
    alert(
            
            '绑定方式一'
            
              )
});
​

            
            
              //
            
            
               绑定方式二:
            
            
$('.box1').on("click",
            
              function
            
            
               () {
    alert(
            
            '绑定方式一'
            
              )
});
​

            
            
              //
            
            
               绑定方式三:
            
            
$('.box1').bind('click',{'a':'b'} 
            
              function
            
            
               (e) {
    alert(
            
            '绑定方式二'
            
              );
    console.log(e.data);
});
​
$(
            
            '.box1').bind('mouseover mouseout', 
            
              function
            
             () { 
            
              //
            
            
               绑定多个事件做同一件事
            
            
    console.log('绑定多个事件做同一件事'
            
              )
});
$(
            
            '.box1'
            
              ).bind({
    
            
            'mouseup': 
            
              function
            
            
               () {
        console.log(
            
            'mouseover'
            
              );
    },
    
            
            'mousedown': 
            
              function
            
            
               () {
        console.log(
            
            'mouseout'
            
              );
    }
});
            
          

解绑事件:

            
              //
            
            
               移除事件,unbind没有参数则代表移除所有事件
            
            
setTimeout(
            
              function
            
            
               () {
    $(
            
            '.box1').unbind('mouseover'
            
              );
}, 
            
            3000
            
              );
​
setTimeout(
            
            
              function
            
            
               () {
    $(
            
            '.box1'
            
              ).unbind();
}, 
            
            10000
            
              )
​
.off(
            
            "click",
            
              function
            
            
              (){
    xxxxx
})
            
          
11.582 绑定事件示例

点击事件:click

            
              //
            
            
               click与dblclick只应该存在一个,大多数都是单击事件
            
            
$('.box1').click(
            
              function
            
            
               (event) 
    
            
            
              //
            
            
               console.log(event.type);                 // event.type事件的类型为:click
            
            
    console.log(event.target);                  
            
              //
            
            
               event.target指的是点击的那个元素
            
            
              })
$(
            
            '.box1').dblclick(
            
              function
            
            
               (event) {
    console.log(event.target);                  
            
            
              //
            
            
               event.target指的是点击的那个元素
            
            
})
          

鼠标:mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave

            $('.box1').mousedown(
            
              function
            
            
               (event) {
        console.log(
            
            '按照鼠标左键不松手'
            
              );
    });
$(
            
            '.box1').mouseup(
            
              function
            
            
               (event) {
    console.log(
            
            '按照鼠标左键松手'
            
              );
});
​
$(
            
            '.box1').mousemove(
            
              function
            
            
               (event) {
    console.log(
            
            '移动鼠标'
            
              , event.pageX, event.pageY);
});
$(
            
            '.box1').mouseover(
            
              function
            
            
               (event) {
    console.log(
            
            '元素以及该元素的子元素在鼠标移入时都会触发,当前的div是:'
            
              , event.target.innerText);
});
​
$(
            
            '.box1').mouseout(
            
              function
            
            
               (event) {
    console.log(
            
            '元素以及该元素的子元素在鼠标离开时都会触发,当前的div是:'
            
              , event.target.innerText);
});
$(
            
            '.box1').mouseenter(
            
              function
            
            
               (event) {
    console.log(
            
            '元素以在鼠标移入时都会触发(与子元素无关),当前的div是:'
            
              , event.target.innerText);
});
$(
            
            '.box1').mouseleave(
            
              function
            
            
               (event) {
    console.log(
            
            '元素以在鼠标移入时都会触发(与子元素无关),当前的div是:'
            
              , event.target.innerText);
});
            
          

对于input框:focus、blur、input

input能够实时检测 textarea input:text input:password input:search 这几个元素的内容变化,但IE9以下版本不支持,需要使用IE特有的onpropertychange事件替代,使用jQuery库的话直接使用on同时绑定这两个事件即可

            $('#inp').on("focus", 
            
              function
            
            
               () {
    console.log(
            
            '鼠标聚焦'
            
              );
});
$(
            
            '#inp').on("blur", 
            
              function
            
            
               () {
    console.log(
            
            '鼠标失去焦点'
            
              );
});

            
            
              //
            
            
               当input框的值发生变化时,实时触发
            
            
$("#inp").on("input", 
            
              function
            
            
               () {
    console.log($(
            
            
              this
            
            
              ).val());
})
$(
            
            "#i1").on("input propertychange", 
            
              function
            
            
               () {
    alert($(
            
            
              this
            
            
              ).val());
  })
            
          

按键:keydown、keyup

            $('#inp').keydown(
            
              function
            
            
               (e) {
    console.log(e.keyCode);
});
$(window).on(
            
            "keydown", 
            
              function
            
             (e) {      
            
              //
            
            
               获取用户按下那个按键
            
            
                  console.log(e.keyCode);
    
            
            
              if
            
             (e.keyCode === 16
            
              ){
        flag 
            
            = 
            
              true
            
            
              ;
    }
});
​
$(
            
            '#inp').keyup(
            
              function
            
             (event) {          
            
              //
            
            
               绑定一个按键抬起的事件
            
            
    console.log('键盘按键弹起'
            
              );
});
$(window).on(
            
            "keyup", 
            
              function
            
            
               (e) {
    console.log(e.keyCode);
    
            
            
              if
            
             (e.keyCode === 16
            
              ){
        flag 
            
            = 
            
              false
            
            
              ;
    }
});
            
          

change:

            
              //
            
            
              表单事件change
            
            
$('#inp').change(
            
              function
            
            
               () {
    console.log(
            
            
              this
            
            .value);            
            
              //
            
            
              失去焦点时就会得到值
            
            
              });
$(
            
            'input[name=sex]').change(
            
              function
            
            
               (event) {
    console.log(
            
            
              this
            
            
              .value);
});
$(
            
            '#select').change(
            
              function
            
            
               () {
    console.log(
            
            
              this
            
            
              .value);
});
            
          

选中checkbox框:select

            
              //
            
            
              表单事件select,CheckBox框被选中时触发
            
            
$('#inp1').select(
            
              function
            
            
               () {
    console.log(
            
            
              this
            
            
              .value);
});
$(
            
            '#inp2').select(
            
              function
            
            
               () {
    console.log(
            
            
              this
            
            
              .value);
});
            
          

提交事件:submit

            
              //
            
            
              表单事件submit
            
            
$('#form').submit(
            
              function
            
            
               (event) {
console.log($(
            
            'input[name=user]'
            
              ).val());
console.log($(
            
            'input[name=pwd]'
            
              ).val());
event.preventDefault();
});
            
          

hover:不能使用on绑定hover事件

            
              //
            
            
              hover事件
            
            
$(".father").hover(                         
            
              //
            
            
               鼠标移到.father上时让.son添加一个.show 
            
            
              function
            
            
               () {
        $(
            
            
              this
            
            ).find(".son").addClass("show"
            
              );
    },
    
            
            
              function
            
             () {                            
            
              //
            
            
               鼠标移出.father上时让.son移除一个.show 
            
            
        $(
            
              this
            
            ).find(".son").removeClass("show"
            
              );
    })
            
          
11.583 事件冒泡应用之事件委托

添加的事件不能用于动态增加事件,例如之前我们在做表格的增删改时,每新增一行内容都需要重新绑定事件,基于事件委托就可以解决该问题

事件委托是通过事件冒泡的原理,利用父标签去捕获子标签的事件

            $('ul').on('mouseover','li',
            
              function
            
            
               (e) {
    $(e.target).css(
            
            'background-color','#ddd').siblings().css('background-color','white'
            
              );
    
            
            
              //
            
            
               e.stopPropagation();
            
            
              return
            
            
              false
            
            
              ;
})
​
$(
            
            "table").on("click", ".delete", 
            
              function
            
            
               () {
  
            
            
              //
            
            
               删除按钮绑定的事件
            
            
})
          
11.584 页面加载完成执行
            $(document).ready(
            
              function
            
            
              (){
    在这里写你的JS代码...
})
​
简写:
$(
            
            
              function
            
            
              (){
    你在这里写你的代码
})
            
          

与window.onload()函数的区别:window.onload()函数有覆盖现象,必须等待着图片资源加载完成之后才能调用,且只能使用一次;jQuery的这个入口函数没有函数覆盖现象,文档加载完成之后就可以调用(建议使用此函数),可以使用多次

11.59 动画效果
            1
            
              、show() 显示隐藏的匹配元素 语法:show(speed,callback) 
参数:
speed:三种预定速度之一的字符串(
            
            'slow','normal','fast')或表示动画时长的毫秒值(如:1000毫秒==
            
              1秒)
callback:在动画完成时执行的函数,每个元素执行一次

            
            2
            
              、hide
hide(speed,callback)跟show使用方法类似,表示隐藏显示的元素。可以通过show()和hide()方法,来动态控制元素的显示隐藏

            
            3
            
              、toggle
如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。
​

            
            1
            
              、slideDown  通过高度变化(向下增大)来到动态地显示所有匹配的元素,在显示完成后触发一个回调函数用法和参数跟上面类似

            
            2
            
              、slideUp   通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地触发一个回调函数。用法和参数跟上面类似

            
            3
            
              、slideToggle 通过高度变化来切换所有匹配元素的可见性,并在切换完成后可选地触发一个回调函数跟toggle用法类似
​

            
            1、fadeIn/fadeOut  通过不透明度的变化来实现所有匹配元素的淡入/
            
              淡出效果,并在动画完成后可选地触发一个回调函数。这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化

            
            2
            
              、fadeTo  把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数。这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。

            
            3、fadeToggle 通过不透明度的变化来开关所有匹配元素的淡入和淡出效果,并在动画完成后可选地触发一个回调函数,这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。实现淡入淡出的效果就是使用此方
          

animate、stop、delay

            1
            
              、animate   概念:用于创建自定义动画的函数  语法:animate(params,[speed],[fn])
参数:
params:一组包含作为动画属性和终值的样式属性和及其值的集合
speed:三种预定速度之一的字符串(
            
            "slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000
            
              )
fn:在动画完成时执行的函数,每个元素执行一次。
​

            
            2
            
              、stop  概念:停止所有在指定元素上正在运行的动画  语法:stop([clearQueue],[jumpToEnd])
参数:
clearQueue:如果设置成true,则清空队列。可以立即结束动画。
gotoEnd:让当前正在执行的动画立即完成,并且重设show和hide的原始样式,调用回调函数等
​

            
            3、delay 概念:用来做延迟的操作  语法:delay(1000),一秒之后做后面的操作
          
11.510 .each()
            
              //
            
            
               为每一个li标签添加class="c1"
            
            
$("li").each(
            
              function
            
            
              (){
  $(
            
            
              this
            
            ).addClass("c1"
            
              );
});
​

            
            
              //
            
            
              使用内置$.each()进行迭代
            
            
              var
            
             arry=[11,22,33,44
            
              ];
$.each(arry,
            
            
              function
            
            
              (k,v){
    console.log(k,v);
});
            
          

注意: jQuery的方法返回一个jQuery对象,遍历jQuery集合中的元素 - 被称为隐式迭代的过程。当这种情况发生时,它通常不需要显式地循环的 .each()方法

也就是说,上面的例子没有必要使用each()方法,直接像下面这样写就可以了:

            $("li").addClass("c1");  
            
              //
            
            
               对所有标签做统一操作
            
          

终止each循环

            
              return
            
            
              false
            
11.511 .data()

.data(key, value): 在匹配的元素上存储任意相关数据/保存一些状态。

            $("div").data("k",100);     
            
              //
            
            
              给所有div标签都保存一个名为k,值为100
            
          

.data(key): 返回匹配的元素集合中的第一个元素的给定名称的数据存储的值

            $("div").data("k");         
            
              //
            
            
              返回第一个div标签中保存的"k"的值 100
            
          

.removeData(key): 移除存放在元素上的数据,不加key参数表示移除所有保存的数据

            $("div").removeData("k");    
            
              //
            
            
              移除元素上存放k对应的数据
            
          

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论