jQuery事件

1.jQuery 事件注册

 

2.jQuery 事件处理

 

2.1 事件处理on() 绑定事件

 

on() 方法在匹配元素上绑定一个或多个事件的事件处理函数

$(function(){
                $("div").on({
                    mouseenter:function(){
                        $(this).css("background","skyblue");
                    },
                    click:function(){
                        $(this).css("background","purple");
                    },
                    mouseleave:function(){
                        $(this).css("background","blue");
                    }
                })
            })
$("div").on("mouseenter mouseleave",function(){
//鼠标经过 鼠标离开 切换类名
                    $(this).toggleClass("current");
                })

on() 方法可以事件委派操作。事件委派的定义就是,把原来加给子元素身上的事件绑定在父元素身上, 就是把事件委派给父元素

//(2) on可以实现事件委托(委派)
                //click是绑定在ul上的,但是触发对象是ul里面的li
                $("ul").on("click","li",function(){
                    
                })

on() 方法优势3:动态创建的元素,click()没有办法绑定事件,on()可以给动态生成的元素绑定事件

//(3)on可以给动态创建的元素绑定事件
                $("ol").on("click","li",function(){
                    alert(11);
                })
                var li = $("<li>我是后来创建的</li>");
                $("ol").append(li);

微博发布效果 案例

<div id="weibo" class="box">
            <span>微博发布</span>
            <textarea name="" cols="30" rows="10" class="txt"></textarea>
            <button class="btn">发布</button>
            <ul></ul>
        </div>
        <script>
            $(function(){
                $(".btn").on("click",function(){
                    var li = $("<li></li>");
                    li.html($(".txt").val() + "<a href=javascript:;>删除</a>");
                    //prepend() 方法在被选元素的开头(仍位于内部)插入指定内容
                    $("ul").prepend(li);
                    li.slideDown();
                    $(".txt").val("");
                });
                //2.点击删除按钮,可以删除当前微博留言li
                //此时的click不能给动态创建的a添加事件 需要通过on的事件委托
                $("ul").on("click","a",function(){
                    $(this).parent().slideUp(function(){
                        $(this).remove();
                    });
                })
            })
        </script>
View Code

2.2 事件处理off()解绑事件

off()方法可以移除通过on()方法添加的事件处理程序

//1.事件解绑 off
            $("div").off("click");//解绑div元素上的点击事件
            $("ul").off("click","li");//解绑事件委托
            //2. one()只能触发事件一次
            $("p").one("click",function(){
                
            })

2.3 自动触发事件 trigger()

 

<script type="text/javascript">
            //1.自动触发事件 元素.事件() 会触发元素的默认行为
            $("div").click();
            //2.元素.trigger("事件")  会触发元素的默认行为
            $("div").trigger("click");
            //3.元素.triggerHandler("事件") 就是不会触发元素的默认行为
            $("div").triggerHandler("click");
        </script>

 

3. jQuery事件对象

事件被触发,就会有事件对象的产生。

阻止默认行为:event.preventDefault()或者 return false
阻止冒泡:event.stopPropagation()

4.jQuery 对象拷贝

如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以使用$.extend()方法

$.extend([deep],target,object1,[objectN])

deep:如果设为true 为深拷贝,默认为false浅拷贝

浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象

深拷贝,前面加true,完全克隆(拷贝的对象,而不是地址),修改目标对象不会影响被拷贝对象

<script type="text/javascript">
            var targetObj = {
                id:0,
                msg{
                    sex:'男'
                }
            };
            var obj = {
                id:1;
                name:"andy
                msg{
                    age:10
                }
            }
            //1.浅拷贝把原来对象里面的复杂数据类型地址拷贝给目标对象
            $.extend(targetObj,obj);//会覆盖 合并targetObj 里面原来的数据

            targetObj.msg.age = 20;
            //2.深拷贝把里面的数据完全复制一份给目标对象 如果里面有不冲突的属性,会合并到一起
            $.extend(true,targetObj,obj);
        </script>

5. jQuery 多库共存
① 如果$符号冲突 就使用jQuery

jQuery.each();

② 让jquery释放对$控制权 让用户自己决定

var suibian = jQuery.noConflict();
suibian.each();

6.jQuery 插件

jQuery常用插件网站:

① jQuery 插件库 http://www.jq22.com/

② jQuery 之家 http://www.htmleaf.com/

图片懒加载(图片使用延迟加载在可提高网页下载速度。它也能帮助减轻服务器负载)

当我们页面滑动到可视区域,再显示图片。

 全屏滚动(fullpage.js)

gitHub:https://github.com/alvarotrigo/fullPage.js

中文翻译网站:http://www.dowebok.com/demo/2014/77/

posted @ 2020-08-27 12:09  哈喽诗涵  阅读(111)  评论(0)    收藏  举报