前天+昨天在折腾本博主题 zSnos-private 的 ajax(jQuery) 加载时碰到一个很郁闷的问题,就是不知道如何去除事件绑定,导致 ajax 请求数成倍增长,囧~
由于没有学过 js ,所以对这些东东不太了解,碰到问题没啥反应,在 Twitter 上请教了 js 高手 Qiqiboy,他说 js 的他会,但 jQuery 的不太了解。于是自己放狗搜……
找到一些资料,特贴此以备忘。
一、用bind()方法来对匹配元素进行特定事件的绑定
在文档装载完成后,使用bind()方法来对匹配元素进行特定事件的绑定,bing() 方法的调用格式为:
bind(type[,data],fn);
3个参数,说明如下
type:blur、focus、load、resize、scroll、unload、click、 dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、 mouseleaye、change、select、submit、keydown、keypress、keyup和error等,当然也可以是自定义名 称。
data是可选参数:作为event.data属性值传递给事件对象的额外数据对象。
fn参数则是用来绑定的处理函数。
例子:点击侧边栏标题显示内容
html代码:
<div id="sidebar">
<h3>标题</h3>
<ul style="display:none"><li>I am zwwooooo.... </li></ul>
</div>
jQuery代码:
$(function(){
$("#sidebar h3").bind("click",function(){
$(this).next().show();
})
});
2010.9.27 ADD:平时我们写像 click、mouseover 和 mouseout 这类事件,因为在程序中经常会使用到,jQuery 为此提供了一套简写方法,如上面的jQuery代码可以写成:
$(function(){
$("#sidebar h3").click(function(){
$(this).next().show();
})
});其实以前我们写的jQuery代码通常都是用这种简写模式。
二、移除之前的绑定事件
用$("#result").unbind("click")
如果你要移除所有的绑定事件,直接用 $("#result").unbind()
例题中用 $("#sidebar h3").unbind("click")
其实还是不太明白,但知道哪里需要用……好囧的学习方式~
EDIT: 由于没有系统学习过 js 和 jQuery,此文章的某些说法或许有些问题,有兴趣者请看#4楼 Qiqiboy 的评论和自行看jQuery的教程书。
转自: http://zww.me/archives/25310