Day04(jQuery事件,事件綁定,demo 滑動解鎖)

jQuery 事件

原生JS帶 on 的事件,去掉 on 就是 jQ 事件

1.單擊事件 click();
原生JS中同一個對象綁定相同的事件,后面的會覆蓋前面的事件;

        btn[0].onclick=function(){
            alert('a')
        }       
        btn[0].onclick=function(){
            alert('b')
        }

//jq對象和dom對象是可以相互轉(zhuǎn)換的
//jq對象轉(zhuǎn)換成dom對象
//方法一:$('#btn')[0];
//方法二:$('#btn').get(0);
                
//jq中同一個對象綁定相同的事件,不會被覆蓋,多個事件融合在一起
/*$(document).click(function(){
        alert('document');
});
btn.click(function(){
        alert('a')
});
btn.click(function(){
        event.stopPropagation();//阻止冒泡
        alert('b');
});
btn.click(function(){
        alert('a');
        event.stopPropagation();
        alert('b')
});*/

2.事件綁定數(shù)據(jù)

并不是局部變量

    btn.click(foo="abc",function(){
        alert(foo)
    });
    box.click(function(){
        alert(foo)
    });
3.hover()事件:相當(dāng)于整合了enter+leave事件
    box.mouseenter(function(){
        console.log('我進(jìn)來了')
    });
    box.mouseleave(function(){
        console.log('我出來了')
    });
box.hover(function(){
    console.log('我進(jìn)來啦')
},function(){
    console.log('我出來啦')
});
4.鍵盤按下事件
$(document).keydown(function(event){
        console.log(event.keyCode)
});
5.窗口大小改變事件
$(window).resize(function(){
    alert('s')
});
6.頁面滾動事件
$(window).scroll(function(){
    alert('s')
});
7.文本選中事件
txt.select(function(){
    console.log('xiaoming');
});

事件綁定

//簡單的寫法:

$('#btn').click(function(){
        alert('s')
});

//通過on方法,把他們擴(kuò)在了一起,就相當(dāng)于把click和function綁定在了一起
$('#btn').on('click',{foo:'a'},function(event){
        alert(event.data.foo)
});

//寫代碼,多用事件的綁定,少直接用click,事件的綁定可以加快運(yùn)行速度,減少資源消耗
指向元素的事件綁定
$(document).on('click','li',function(){
    alert('s')
})
事件的解綁
$('#btn').on('click',function(){
        alert('s')
});
$('#btn').on('click',function(){
        alert('d')
});
$('#btn').off('click');
jq事件綁定的命名空間
$('#btn').on('click.abc',function(){
        alert('a');
});         
$('#btn').on('click.dfg',function(){
        alert('b');
});
$('#btn').off('click.adc');

on事件,是在jq 1.7版本之后才出現(xiàn)的新東西;
在1.7之前,我們都是用的bind來綁定事件;
1.7以后,出現(xiàn)了on,和bing效果完全一致,效率更好,所以就徹底替代了bind;

on 可以一次綁定多個事件;
$('#btn').on('click mouseenter',function(){
        alert('s');
})
事件的委托
//jq里面事件的委托:將事件綁定在上一級元素上面,通過上一級元素來監(jiān)聽事件的觸發(fā)

//事件的綁定
    $('.box li').on('click',function(){
        $('.box2').append($(this).clone())
    });
                
//事件的委托
    $('.box').on('click','li',function(){
        console.log($(this).html())
    });
一次性事件
$('button').one('click',function(){
    alert('s')
});
trigger() 直接執(zhí)行對象綁定的事件和默認(rèn)行為
$('button').click(function(){
    $('.ds').trigger('click')
});
*$('.ds').on('click',function(){
    $(this).css('background','cyan')
});
triggerHandler 僅僅只是執(zhí)行事件,不處罰默認(rèn)行為
$('button').click(function(){
    $('.ds').triggerHandler('click')
    //和trigger一模一樣,唯一的區(qū)別,不會執(zhí)行瀏覽器的默認(rèn)行為
    //比如:from的提交
    //比如:瀏覽器的冒泡行為
});*/

demo 滑動解鎖

<style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            .box{
                width: 800px;
                height: 50px;
                border: 1px solid #aaa;
                position: relative;
                margin: 100px auto;
            }
            .slider{
                width: 100px;
                height: 50px;
                background: darkgreen;
                position: absolute;
                left: 0;
                top: 0;
                cursor: pointer;
                z-index: 10;
            }
            .sp{
                width: 100%;
                position: absolute;
                text-align: center;
                line-height: 50px;
                font-size: 18px;
                z-index: 5;
                display: none;
            }
        </style>
<div class="box" id="box">
            <div class="slider" id='slider'></div>
            <span class="sp" id="sp">解鎖成功</span>
        </div>
<script type="text/javascript" src="jquery-3.2.1.min.js" ></script>
        <script type="text/javascript">
            $(function(){
                var box = $('#box');
                var slider = $('#slider');
                var sp = $('#sp');
                
                slider.mousedown(function(e){
                    //獲取鼠標(biāo)點(diǎn)擊的位置與滑塊左側(cè)的相對距離
                    var dx = e.clientX - box.offset().left;
                    var dsx = e.clientX;
                    //鼠標(biāo)在滑塊上面移動的事件
                    box.mousemove(function(e){
                        var sliderLeft = e.clientX - dsx;
                        slider.css('left',sliderLeft);
                        if(slider.position().left>=700){
                            slider.css('left','700px');
                        }
                        if(slider.position().left<=0){
                            slider.css('left','0px');
                        }
                    });
                });
                
                slider.mouseup(function(){
                    box.off('mousemove');
                    if(slider.position().left==700){
                        slider.css('display','none');
                        sp.css('display','block');
                    }
                    if(slider.position().left<700){
                        slider.css('left',0);
                    }
                });
                
                slider.mouseout(function(){
                    slider.mouseup()
                });
                
                
                
            });
        </script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 本文章是老馬jQuery視頻的講義和上課的代碼。具體觀看視頻地址:https://chuanke.baidu.co...
    IT老馬閱讀 2,663評論 3 14
  • 總結(jié): 鼠標(biāo)事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,719評論 2 10
  • 第1章 鼠標(biāo)事件 1-1 jQuery鼠標(biāo)事件之click與dbclick事件 用交互操作中,最簡單直接的操作就是...
    mo默22閱讀 1,345評論 0 6
  • 逃離擁擠的人群,開始自娛自樂的工作時間,還好,我心里還有陽光…… ...
    沐愿閱讀 350評論 0 0

友情鏈接更多精彩內(nèi)容