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>
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/

浙公网安备 33010602011771号