Jquery事件处理

/*document对象加载成功*/
$(document).ready(function(){
$("#show").append("<p>documentReady</p>");
});
$(function(){
$("#show").mouseover(function(){
/*鼠标进入事件*/
$(this).append("<p>鼠标进入</p>");
$(this).css("background-color","#333");//修改背景颜色
$(this).css("color","#fff");//修改文本颜色
})

.mouseout(function(){
/*鼠标离开事件*/
$(this).append("<p>鼠标离开</p>");
$(this).css("background-color","#ddd");//修改背景颜色
$(this).css("color","#000");//修改文本颜色
});
});
$(function(){
$("input").focus(function(){
/*获得焦点*/
$(this).addClass("input_focus");
})
.blur(function(){
/*失去焦点*/
$(this).removeClass("input_focus");
});
});
$(function(){
$("input[name=username]").change(function(){
/*值改变时触发*/
alert("用户名文本框内容已改变。");
});
});
$(function(){
$(window).resize(function(){
/*改变大小时触发*/
varwidth=$(this).width();//获得宽度
varheight=$(this).height();//获得高度
varstatus_msg="Size:"+width+"*"+height;//初始化状态栏信息
$(window).attr("status",status_msg);//设置浏览器状态栏信息
})
}

绑定事件

   $("button").click(function() {});

bind(map)方法

   可以一次为对象绑定多个事件,参数为"键(事件类型)/值(事件处理程序)"对的集合
  为所有的文本框添加焦点获取和丢失的事件
   $("input[type='text']").bind({
         focus: function() {},
        blur: function() {}
   });

bind(type, [data], fn)方法

在为对象绑定事件的同时,为事件处理程序传递额外的参数

        <button>Button</button>
       $(document).ready(function() {             $("button").bind("click",
                {
                   arg1: '2012',
                   arg2: '10.1'
                }, 
               function(event) {
                  alert("arg1:" + event.data.arg1 + " arg2: " + event.data.arg2);
              }
            );
        });
 程序中为命令按钮的单击事件传入名为arg1和arg2的两个参数,然后在事件处理程序里使用event对象的data属性获取参数集合。

one(type, [data], fn)方法

将为对象绑定一个指定类型的一次性的方法处理程序,同样,该方法可以传递参数。

hover(over, out)方法

是要绑定在鼠标盘旋到该DOM对象上方的时候的事件处理程序,其中需要两个参数,就是最常用的两个被鼠标盘旋的事件,即mouseover事件和
mouseout事件
$(document).ready(function() {
$(".p_box").hover(function() {
/** Function Boby/
}, function() {
/
Function Body**/
});
})

toggle(fn1, fn2, ...)

它的作用是在被单击的时候依次循环的调用参数传递过来的函数列表。

        <button>Button</button>
        $(document).ready(function() {
           $("button").toggle(function() {
                  $(this).append("1");
            },
           function() {
                $(this).append("2");
            },
            function() {
                $(this).append("3");
             }
           );
        });

live(type, fn)方法

该方法为整个页面生命周期内的某一类对象绑定一个事件处理程序
前面介绍的事件绑定方法只为执行该绑定操作的时候满足条件的对象绑定该事件,而live方法绑定的事件处理程序将响应所有满足条件的对象, 无论是现在满足条件对象还是未来经过某些操作后满足条件的对象。

       <button class="btn">Button</button>
       <button id="btn2"></button>
      使用bind方法绑定单击事件
           $(document).ready(function() {
               $(".btn").bind("click", function() {
                    //绑定单击事件
                   alert("Click Button");
              });
            $("#btn2").addClass("btn"); //添加一个btn类
           });             
       使用live方法绑定单击事件
           $(document).live("click", function() {
                 //绑定单击事件
                 alert("Click Button");
           });
           $("#btn2").addClass("btn"); //添加一个btn类
          });

以上两段代码的执行效果是有区别的,第一段使用bind方法绑定的单击事件,只应用到了第一个按钮中,也就是说单击第二个按钮的时候程序没有反映,
因为绑定的时候只有第一个按钮具有值为btn的class属性,第二段使用live方法绑定单击事件,两个按钮都将绑定单击事件处理程序,也就是说单击两个按钮
中的任意一个都会弹出Click Button对话框,除了这两个按钮,如果页面中动态添加btn类的DOM元素,可以直接使用该事件处理程序。

删除事件

jQuery提供了2个删除事件处理程序的方法,分别如下:

unbind([type], data)方法

删除匹配对象的事件处理程序,对应bind方法,它可以删除所有以bind方式绑定的自定义事件处理程序
$("#btn1").unbind("click");
$("#btn1").unbind("click", btnClick);

die([type][,fn])方法

die方法与live方法对应,用于解除用live注册的自定义事件 , type用于指定要删除的事件类型,fn用于指定要删除的事件处理程序的名称。

例子

<!DOCTYPE html>
<html>
  <head>
    <title>User Registration and Validation</title>
    <script src="http://code.jquery.com/jquery-1.7.1.js"></script>
    <script>
      $(function(){
        $( 'input[name="validate"]' ).click(function(){
           // clear message div
           $( "#msg" ).html( "" );
 
           // get values for all input boxes
           var userName = $( 'input[name="userName"]' ).val();  
           var email = $( 'input[name="email"]' ).val();  
           var pass1 = $( 'input[name="password"]' ).val();  
           var pass2 = $( 'input[name="chkPassword"]' ).val();  
 
           // no empty values permitted
           var hasValue = userName && email && pass1 && pass2;
           if( !hasValue ){
               $( "#msg" )
               .append( "All Fields are required." )
               .css( "color","red" );
               return false;
           }
           // check that passwords match
           var passwordMatch = false;
           if( pass1 === pass2 ) {
               passwordMatch = true;
           }
 
           if( !passwordMatch ){
               $("#msg").append("<p>Passwords don't match. </p>").css("color", "red");
               return false;
           } 
        });
       
        $( "input[name='addLocation']" ).click(function(){
            $( "body" ).append( "<select name='stateCombo'><option>"
                                + "Select State</option></select>" );
 
            // disable add location button so that we don't get
            // more than one drop-down
            $(this).attr("disabled", "disabled");
 
            // add some sample states
            var states = ["California", "Florida", "New York"];
            $.each(states, function(index, value){
                   $("[name='stateCombo']").append("<option value='" 
                                                   + index
                                                   + "'>" 
                                                   + value 
                                                   + "</option>");
            });
 
            // add another empty select list
            $("body").append("<select name='cityCombo'>" 
                             + "<option>Select City</option></select>");
        });
 
        // use .live() since states select box doesn't exist yet
        $("[name='stateCombo']").live("change", function(event){
            // get name of state and fill with some data
            var selectedState = $(this).val();
 
            var CA_Cities = ["San Francisco", "Los Angeles", "Mountain View"];
            var FL_Cities = ["Fort Lauderdale", "Miami", "Orlando"];
            var NY_Cities = ["New York", "Buffalo", "Ithica"];
            var cities = [];
 
            if(selectedState == 0){
               cities = $.extend([], CA_Cities); 
            } else if(selectedState == 1){
               cities = $.extend([], FL_Cities); 
            } else if(selectedState == 2){
               cities = $.extend([],NY_Cities); 
            }
 
            // clear cityCombo of any previous values
            $("[name='cityCombo']").empty();
            $.each(cities, function(index, value){
                $("[name='cityCombo']").append("<option value='"
                                               +index
                                               +"'>"
                                               +value
                                               +"</option>"); 
            });
        });
      });
    </script>
  </head>
  <body>
    <div id="msg"></div>
    <form name="userRegistrationForm">
      <label for="userName">User</label>
      <input type="text" name="userName" /><br/>
      <label for="email">Email</label>
      <input type="text" name="email" /><br/>
      <label for="password">Password</label>
      <input type="password" name="password" /><br/>
      <label for="chkPassword">Re-enter Password</label>
      <input type="text" name="chkPassword" /><br/>
      <input type="button" name="validate" value="Validate Inputs" />
    </form>
    <input type="button" name="addLocation" value="Add Location" />
  </body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 本文章是老马jQuery视频的讲义和上课的代码。具体观看视频地址:https://chuanke.baidu.co...
    IT老马阅读 2,562评论 3 14
  • 因为JavaScript在浏览器中以单线程模式运行,页面加载后,一旦页面上所有的JavaScript代码被执行完后...
    _我和你一样阅读 329评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • jQuery 能做什么? jQuery是一个轻量级的javascript库,可以少写代码,做更多的事。1.jQue...
    小囧兔阅读 374评论 0 1
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,321评论 0 2