jQuery慢慢啃之事件(七)
1.ready(fn)//当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。
$(document).ready(function(){ // 在这里写你的代码...});
使用 $(document).ready() 的简写,同时内部的 jQuery 代码依然使用 $ 作为别名,而不管全局的 $ 为何。
$(function($) { // 你可以在这里继续使用$作为别名... });
2.on(events,[selector],[data],fn)//在选择元素上绑定一个或多个事件的事件处理函数。
data:当一个事件被触发时要传递event.data给事件处理函数。
$("p").on("click", function(){alert( $(this).text() );});//简单方式
function myHandler(event) {
alert(event.data.foo);
}
$("p").on("click", {foo: "bar"}, myHandler)//传递一个jison值给事件event.data中
$("form").on("submit", false)//取消提交并且取消冒泡
$("form").on("submit", function(event) {event.preventDefault();});//取消当前元素的默认动作,此处是提交
$("form").on("submit", function(event) {event.stopPropagation();});//终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播
3.off(events,[selector],[fn])//在选择元素上移除一个或多个事件的事件处理函数
最好的做法是安装和取下使用命名空间的事件,从而使代码不会无意中删除其他代码附加事件处理程序。
$("p").off()//删除所有的段落的事件
$("p").off( "click", "**" )//删除委托上的所有事件var foo = function () { };//定义方法事件
$("body").on("click", "p", foo);//绑定事件
$("body").off("click", "p", foo); //删除某一个事件上的一个方法var validate = function () {};//定义事件
$("form").on("click.validator", "button", validate);//绑定具有命名空间的事件
$("form").on("keypress.validator", "input[type='text']", validate);//绑定具有命名空间的事件
$("form").off(".validator");//删除命名空间下的所有事件
4.bind(type,[data],fn)//为每个匹配元素的特定事件绑定事件处理函数
type,[data],false //false: 将第三个参数设置为false会使默认的动作失效。
$("p").bind("click", function(){ alert( $(this).text() );});//当每个段落被点击的时候,弹出其文本。
$('#foo').bind('mouseenter mouseleave', function() {$(this).toggleClass('entered');});//同时绑定多个事件类型
$("button").bind({//同时绑定多个事件类型/处理程序
click:function(){$("p").slideToggle();},
mouseover:function(){$("body").css("background-color","red");},
mouseout:function(){$("body").css("background-color","#FFFFFF");}
});
function handler(event) {alert(event.data.foo);} //事件处理之前传递一些附加的数据。
$("p").bind("click", {foo: "bar"}, handler)
$("form").bind("submit", function() { return false; })//通过返回false来取消默认的行为并阻止事件起泡。
$("form").bind("submit", function(event){event.preventDefault();});//通过使用 preventDefault() 方法只取消默认的行为。
$("form").bind("submit", function(event){event.stopPropagation();});//通过使用 stopPropagation() 方法只阻止一个事件起泡。
5.one(type,[data],fn)//为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。
$("p").one("click", function(){alert( $(this).text() );});
6.trigger(type,[data])//在每一个匹配的元素上触发某类事件。这个函数也会导致浏览器同名的默认行为的执行,如果要阻止这种默认行为,应返回false。
$("form:first").trigger("submit")//触发事件$("p").click( function (event, a, b) {//先定义事件,在给传递带参数并且触发
// 一个普通的点击事件时,a和b是undefined类型
// 如果用下面的语句触发,那么a指向"foo",而b指向"bar"
} ).trigger("click", ["foo", "bar"]);
$("p").bind("myEvent", function (event, message1, message2) {alert(message1 + ' ' + message2);});//定义自己的事件
$("p").trigger("myEvent", ["Hello","World!"]);//触发自定义事件
7.triggerHandler(type, [data])//这个特别的方法将会触发指定的事件类型上所有绑定的处理函数。但不会执行浏览器默认动作,也不会产生事件冒泡。
这个方法的行为表现与trigger类似,但有以下三个主要区别:
* 第一,他不会触发浏览器默认事件。
* 第二,只触发jQuery对象集合中第一个元素的事件处理函数。
* 第三,这个方法的返回的是事件处理函数的返回值,而不是据有可链性的jQuery对象。此外,如果最开始的jQuery对象集合为空,则这个方法返回 undefined
<button id="old">.trigger("focus")</button>
<button id="new">.triggerHandler("focus")</button><br/><br/>
<input type="text" value="To Be Focused"/>
$("#old").click(function(){$("input").trigger("focus");});
$("#new").click(function(){$("input").triggerHandler("focus");});
$("input").focus(function(){$("<span>Focused!</span>").appendTo("body").fadeOut(1000);});
8.unbind(type,[data|fn]])//bind()的反向操作,从每一个匹配的元素中删除绑定的事件
$("p").unbind()//把所有段落的所有事件取消绑定
$("p").unbind( "click" )//将段落的click事件取消绑定
删除特定函数的绑定,将函数作为第二个参数传入
var foo = function () {// 处理某个事件的代码};
$("p").bind("click", foo); // ... 当点击段落的时候会触发 foo
$("p").unbind("click", foo); // ... 再也不会被触发 foo
9.live(type, [data], fn)//给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。
$('.clickme').live('click', function() {alert("Live handler called."); });//后米添加的元素依然有事件
$('body').append('<div class="clickme">Another target</div>');
$('.hoverme').live('mouseover mouseout', function(event) {// 同时绑定mouseover和mouseout事件
if (event.type == 'mouseover') {
// do something on mouseover
} else {
// do something on mouseout
}
});
$("a").live({
click: function() { // do something on click},
mouseover: function() { // do something on mouseover }
});
其实.bind(), .live(), .delegate()都是通过.on()来实现的,.unbind(), .die(), .undelegate(),也是一样的都是通过.off()来实现的,
10.die//从元素中删除先前用.live()绑定的所有事件
function aClick() {
$("div").show().fadeOut("slow");
}
$("#unbind").click(function () {
$("#theone").die("click", aClick)
});
11.delegate(selector,[type],[data],fn)//指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
//使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
$("div").delegate("button","click",function(){ $("p").slideToggle();});
delegate这个方法可作为live()方法的替代,使得每次事件绑定到特定的DOM元素。
以下两段代码是等同的:
$("table").delegate("td", "hover", function(){ $(this).toggleClass("hover");});
$("table").each(function(){ $("td", this).live("hover", function(){ $(this).toggleClass("hover");});}); 12.undelegate([selector,[type],fn])//删除由 delegate() 方法添加的一个或多个事件处理程序
$("p").undelegate();//从p元素删除由 delegate() 方法添加的所有事件处理器
$("p").undelegate( "click" )//从p元素删除由 delegate() 方法添加的所有click事件处理器
从form元素删除由 delegate() 方法添加的".whatever"命名空间:
var foo = function () { //.....};
//用delegate() 方法给click事件增加".whatever"命名空间
$("form").delegate(":button", "click.whatever", foo);
$("form").delegate("input[type='text']", "keypress.whatever", foo);
// 用undelegate()方法删除delegate()方法增加的".whatever"命名空间
$("form").undelegate(".whatever");
13.hover([over,]out)//一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法
$("td").hover//鼠标悬停的表格加上特定的类
(
function () {$(this).addClass("hover");},
function () { $(this).removeClass("hover");}toggle([speed],[easing],[fn])
); 14.
//用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件
//如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。
$('td).toggle();//对表格切换显示/隐藏
$("td").toggle(//对表格的切换一个类
function () { $(this).addClass("selected");},
function () { $(this).removeClass("selected"); }
);
$("p").toggle("slow");//用600毫秒的时间将段落缓慢的切换显示状态
$("p").toggle("fast",function(){ alert("Animation Done.");});//用200毫秒将段落迅速切换显示状态,之后弹出一个对话框。
$('#foo').toggle(showOrHide);
//相当于
if (showOrHide) {$('#foo').show();} else { $('#foo').hide();}
15.blur([[data],fn])//当元素失去焦点时触发 blur 事件
$("p").blur();
$("p").blur( function () { alert("Hello World!"); } );
16.change([[data],fn])//当元素的值发生改变时,会发生 change 事件
$(selector).change();//触发被选元素的 change 事件。
$("input[type='text']").change( function() { // 这里可以写些验证代码});
17.click([[data],fn])//触发每一个匹配元素的click事件。
$("p").click();//触发每一个匹配元素的click事件
$("p").click( function () { $(this).hide(); });//将页面内所有段落点击后隐藏
18.dblclick([[data],fn])//当双击元素时,会发生 dblclick 事件
19.error([[data],fn])//当元素遇到错误(没有正确载入)时,发生 error 事件。
$(window).error(function(msg, url, line){
jQuery.post("js_error_log.php", { msg: msg, url: url, line: line });
});
$("img").error(function(){
$(this).hide();
});
20.focus([[data],fn])//当元素获得焦点时,触发 focus 事件。
$(document).ready(function()//当页面加载后将 id 为 'login' 的元素设置焦点
{$("#login").focus();});
使人无法使用文本框:
$("input[type=text]").focus(function(){ this.blur();});
21.focusin([data],fn)//当元素获得焦点时,触发 focusin 事件,focusin事件跟focus事件区别在于,他可以在父元素上检测子元素获取焦点的情况。
22.focusout([data],fn)//当元素失去焦点时触发 focusout 事件,focusout事件跟blur事件区别在于,他可以在父元素上检测子元素失去焦点的情况。
23.keydown([[data],fn])//当键盘或按钮被按下时,发生 keydown 事件。
$(window).keydown(function(event){
switch(event.keyCode) {
// ...
// 不同的按键可以做不同的事情
// 不同的浏览器的keycode不同
// 更多详细信息: http://unixpapa.com/js/key.html
// ...
}
});
24.keypress([[data],fn])//当键盘或按钮被按下时,发生 keypress 事件
$("input").keydown(function(){
$("span").text(i+=1);
});
25.keyup([[data],fn])//当按钮被松开时,发生 keyup 事件。它发生在当前获得焦点的元素上。
26.mousedown([[data],fn])//当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件。
$("button").mousedown(function(){
$("p").slideToggle();
});
27.mouseenter([[data],fn])//当鼠标指针穿过元素时,会发生 mouseenter 事件。该事件大多数时候会与mouseleave 事件一起使用。
28.mouseleave([[data],fn])//当鼠标指针离开元素时,会发生 mouseleave 事件。该事件大多数时候会与mouseenter 事件一起使用
29.mousemove([[data],fn])//当鼠标指针在指定的元素中移动时,就会发生 mousemove 事件。
mousemove事件处理函数会被传递一个变量——事件对象,其.clientX 和 .clientY 属性代表鼠标的坐标
30.mouseout([[data],fn])//当鼠标指针从元素上移开时,发生 mouseout 事件 31.mouseover([[data],fn])//当鼠标指针位于元素上方时,会发生 mouseover 事件 32.mouseup([[data],fn])//当在元素上放松鼠标按钮时,会发生 mouseup 事件。
33.resize([[data],fn])//当调整浏览器窗口的大小时,发生 resize 事件
34.scroll([[data],fn])//当用户滚动指定的元素时,会发生 scroll 事件
35.select([[data],fn])//当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件。
36.submit([[data],fn])//当提交表单时,会发生 submit 事件。
37.unload([[data],fn])//在当用户离开页面时,会发生 unload 事件
jQuery慢慢啃之事件(七)的更多相关文章
- jQuery慢慢啃之事件对象(十一)
1.event.currentTarget//在事件冒泡阶段中的当前DOM元素 $("p").click(function(event) { alert( event.curren ...
- jQuery慢慢啃之工具(十)
1.jQuery.support//一组用于展示不同浏览器各自特性和bug的属性集合 2.jQuery.browser//浏览器内核标识.依据 navigator.userAgent 判断. 可用值: ...
- jQuery慢慢啃之ajax(九)
1.jQuery.ajax(url,[settings])//通过 HTTP 请求加载远程数据 如果要处理$.ajax()得到的数据,则需要使用回调函数.beforeSend.error.dataFi ...
- jQuery慢慢啃之文档处理(五)
1.append(content|fn)//向每个匹配的元素内部追加内容. $("p").append("<b>Hello</b>"); ...
- jQuery慢慢啃筛选(四)
1.eq(index|-index) 获取第N个元素 其中负数:一个整数,指示元素的位置,从集合中的最后一个元素开始倒数.(1算起) $("p").eq(1)//获取匹配的第二个元 ...
- jQuery慢慢啃之核心(一)
1. $("div > p"); div 元素的所有p子元素. $(document.body).css( "background", "bla ...
- jQuery慢慢啃之回调(十三)
1.callbacks.add(callbacks)//回调列表中添加一个回调或回调的集合 // a sample logging function to be added to a callback ...
- jQuery慢慢啃之特效(八)
1.show([speed,[easing],[fn]])\\显示隐藏的匹配元素 //speed:三种预定速度之一的字符串("slow","normal", o ...
- jQuery慢慢啃之CSS(六)
1.css(name|pro|[,val|fn])//访问匹配元素的样式属性 $("p").css("color");//获取 $("p") ...
随机推荐
- 利用MVC的过滤器实现url的参数加密和解密
最近在与一个IOS应用做接口对接,之前一直都没有遇到什么很大的问题,但是有一天发现可以通过软件解析app的url,然后直接通过url的拼接修改接口数据,这一下使得数据的安全性和准确性都降低了,于是就想 ...
- 搜索(剪枝优化):HDU 5113 Black And White
Description In mathematics, the four color theorem, or the four color map theorem, states that, give ...
- winphone 开发学习笔记(2)
导航 NavigationService.Navigate(new Uri("xxxx.xaml",UriKind.Relative)) xxx表示要跳转的目标页面 页面和页面导航 ...
- 常用Dos命令笔记
0x00 磁盘FAT32格式转NTFS convert e: /fs:ntfs Tips: 语法规则: Converts a FAT volume to NTFS. CONVERT volume /F ...
- myeclipse svn
打开myeclipse的help---install from site 点击add弹出对话框 在输入框中输入对应内容 http://subclipse.tigris.org/update_1.10. ...
- java 启用新线程异步调用
2秒后执行 某段代码: demo如下: System.out.println("正常执行...111"); Thread t = new Thread(){ public void ...
- opencv学习笔记-图像叠加、混合
在图像处理中,目标区域定义为感兴趣区域ROI(region of Interest),这是后期图像处理的基础,在获取ROI后,进行一些列的处理.ROI区域在Opencv中就是Rect,先构建Rect, ...
- Oracle 同步表权限分配(同义词)
新建了同义词之后还要 分配权限
- 关于MS office 180天后再次激活遇到的问题解决方法
遇到的问题: 再次点击miniKMS 激活软件激活失败 : 我也不知道这是为什么?后来我在同一目录重装了一次,点击的还是我以前的那个KSM激活软件,出现的错误还是一样的.于是我想可能是这个激活软件的 ...
- SQL语法集锦三:合并列值与分拆列值
本文转载http://www.cnblogs.com/lxblog/archive/2012/09/29/2708724.html 在SQL中分拆列值和合并列值老生常谈了,从网上搜刮了一下并记录下来, ...