jQuery---- 常用操作

jQuery的链式操作:

  1.  $(this)
      .addClass("highlight").children("li").show().end()
      .sibilings().removeClass("highlight").children("li").hide();   

jQuery对象和DOM对象:
 

  1. var $cr = $("cr"); // jQuery对象
  2. var cr  = $cr[0];   // DOM对象
  3. var dr = $cr.get(0) // DOM对象
  4. var $dr = $(dr)       // jQuery对象

jQuery的选择器:
 

  1. 备忘
    1. Query的选择器是和css选择器类似的
    2. $("tt").css("color","red"); 无需判断tt元素是否存在
    3. if($("tt").length>0) …; 判断tt存在
  2. 基本选择器
    1. $("#selector")
    2. #(".select")
    3. $("div")
    4. $("*")
    5. $("div,span,p.class")
  3. 层次选择器
    1. $("div span") // div下所有的span
    2. $("div > span") // div的span子元素
    3. $(".one + div") // 紧挨class为.one的下一个元素 = $(".one").next("div")
    4. $("#two~div") // id为two后面所有的div元素 = $("#two").nextAll("div") << $("#two").siblings("div")
  4. 过滤选择器
    1. 基本过滤选择器
      1. $("div:first")
      2. $("div:last")
      3. $("div:not(.one)") or $("div:not(#two)") //not(selector)
      4. $("div:even")
      5. $("div:odd")
      6. $("div:eq(3)") or $("div:gt(3)") or $("div:lt(3)")
      7. $(":header).css("color","red");  //改变所有h1,h2…标题
      8. $("animated") //正在执行动画的元素
    2. 内容选择过滤器
      1. $("div:contains('匹配内容')")  //含有文本“匹配内容”的div
      2. $("div:empty")  //空元素
      3. $("div:has(selector)") // 含有selector的元素
      4. $("div:parent") //匹配div的父元素
    3. 可见性过滤选择器
      1. $("div:visible")
      2. $("div:hidden")  //包括display : none、input : hidden、visibility : hidden这样的元素
    4. 属性过滤器
      1. $("div[title]") //匹配有title的div
      2. $("div[title=test]")
      3. $("div[title!=test]")
      4. $("div[title^=te]") //以te开头的title
      5. $("div[title$=est") //以est收尾的title
      6. $("div[title*=te]") //title包含te
      7. $("div[id][title*=es]")  //div中有id属性且title包含es字符
    5. 子元素过滤选择器
      1. $("div.one :nth-child(2)") //div(class=one)下第二个子元素 
      2. $("div.one :nth-child(even)") or $("div.one :nth-child(odd)") or $("div.one :nth-child(3n)")
      3. $("div.one :first-child") //第一个子元素
      4. $("div.one :last-child") //最后一个子元素
      5. $("div.one :only-child") //div中只有一个子元素才能匹配
    6. 表单对象属性过滤选择器
      1. $("#form1 :enabled") //form1中所有可用元素
      2. $("#form1 :disabled") //form1中所有不可用元素
      3. $("input :checked") //单选框、复选框
      4. $("select :selected") //下拉列表
    7. 表单选择器
      1. :input、:text、:password、:radio、:checkbox、:submit、:image、:reset、:button、:file、:hidden;
      2. 分别对应于表单各类元素
    8. 选择器的注意事项
      1. 选择器中含有*,#,(,[等字符,使用\\双斜线转义:$("id\\#b")转义id#b、$("id\\[1\\]")转义id[1]
      2. $(".test :hidden") 和 $(".test:hidden")是不同的,第一个选择的是class=test元素包含的hidden的子元素,第二个是hidden的class=test的元素。前一个是后代选择器、后一个是过滤选择器
    9. 一个生动的选择器的例子: $("ul li:gt(5):not(:last)").hide();  在一个列表(ul)中隐藏第5个以后,但不包括最后一个(显示更多)的li,这个就是精简显示。

jQuery中的DOM操作:
 

  1. DOM操作的分类
    1. DOM Core
    2. HTML DOM
    3. CSS DOM
  2. jQuery中的DOM (使用jQuery的选择器)
    1. 查找节点
      1. 查找元素节点 $("ul li:eq(1)")
      2. 查找属性节点 $("p").attr('title')
    2. 创建节点
      1. 创建元素节点
        1. var $li_1 = $("<li></li>");
        2. $("ul").append($li_1).append($li_2);
      2. 创建文本节点
        1. var $li_1 = $("<li>这里的文字就是你创建的文本节点,不能脱离元素节点单独存在</li>");
      3. 创建属性节点
        1. var $li_1 = $("<li title="这里是属性节点,同样不能独立存在">文本节点</li>");
    3. 插入节点
      1. $("p").append("<b>你好</b>"); //在p内追加内容
      2. $("<b>你好</b>").appendTo("p"); 
      3. $("p").prepend("<b>你好</b>"); //在p内前置内容
      4. $("<b>你好</b>").prependTo("p");
      5. $("p").after("<b>你好</b>"); //在p后插入内容
      6. $("<b>你好</b>").insertAfter("p");
      7. $("p").before("<b>你好</b>"); //在p前插入内容
      8. $("<b>你好</b>").insertBefore("p");
    4. 删除节点
      1. $("ul li:eq(2)").remove();
        1. $li_1 = $("ul li:eq(1)").remove();
        2. $li_1.appendTo("ul");
      2. $("ul li:eq(2)").empty();  //清空选择的li节点
    5. 复制节点
      1. $("li:eq(3)").clone(true).appentTo("ul"); //把li节点复制到ul中,clone的参数true表示同时复制元素绑定的事件。留空表示不复制事件
    6. 替换节点
      1. $("p").replaceWith("<strong>替换文本</strong>");
      2. $("<strong>替换文本</strong>").replaceAll("p");
      3. 节点替换以后,绑定在原来节点上的事件消失
    7. 包裹节点
      1. $("strong").wrap("<b></b>"); //把匹配的strong每个用b包裹起来
      2. $("strong").wrapAll("<b></b>"); //同时包裹所有匹配的strong
      3. $("strong").wrapInner("<b></b>"); //把匹配的strong的内容用b包裹起来
    8. 属性操作
      1. var p_txt = $("p").attr("title");
      2. $("p").attr("title","设置的标题");
        1. $("p").attr({"title":"设置的标题","name":"设置的名字"});
      3. $("p").removeAttr("title");   // 删除title
    9. 样式操作
      1. var p_class = $("p").attr("class");
      2. $("p").attr("class","pclass");
      3. $("p").addClass("otherclass"); 
        1. 合并多个class
        2. 最后边出现的相同css内容覆盖前面的
      4. $("p").removeClass(); // 删除p所有的样式
        1. $("p").removeClass("otherclass") // 删除p中的otherclass样式
      5. $("p").addClass("class").toggleClass("otherclass");  // 切换样式
      6. $("p").hasClass("another");  // 是否含有another样式
        1. 等价于 $("p").is(".another")
    10. 设置和获取html、文本和值
      1. var p_html = $("p").html();
        1. $("p").html("<strong>设置的html的内容</strong>");
        2. html方法可以用于html文档,不适用于xml
      2. var p_text = $("p").text(); // 获取p中的文本内容。和html不同的是,html返回p中的html代码,其中包括文本
        1. $("p").text("你最喜欢的内容是?");
        2. text方法对html和xml都有效
      3. var input_val = $("input").val();
        1. val方法获取文本框,下拉列表,单选框,多选框的值
        2. $("input").val("这里是设置的新值");
    11. 遍历节点
      1. var ul_length = $("ul").children().length;  // children方法取得匹配元素的子元素集合
      2. var ul_the_next = $("p").next(); // next方法取得和匹配元素紧挨着的下一个同辈元素
      3. var p_the_prev = $("ul").prev(); // prev方法取得和匹配元素紧挨着的前一个同辈元素
      4. var li_the_siblings = $("ul li:eq(1)").siblings();  // 取得匹配元素的同辈元素(不限元素类别)
      5. 除此之外jQuery还有很多遍历节点的方法,如closest(), find(), nextAll(), prevAll(), parent(), parents()等。
    12. CSS-DOM方法
      1. var p_color = $("p").css("color");
         
      2. $("p").css("color","red");
      3. $("p").css({"color":"red","font-size":"14px"}); 
      4. $("p").css("opacity","0.5");
        1. jQuery已经处理好了透明度的兼容问题,所以在这里这样使用是最为方便快捷的
      5. $("p").css("height") or $("p").height();   // jQuery的css快捷方法
      6. jQuery还有几个经常用的方法:
        1. offset() 方法,获取元素在当前视窗的相对偏移
          1. var p_offset = $("p").offset();
          2. var p_left = p_offset.left;
          3. var p_top = p_offset.top;
        2. position()方法 , 获取元素相对于最近的被relative或者absolute的父祖级节点的相对偏移
          1. var p_position = $("p").position();
          2. var p_left = p_position.left;
          3. var p_top = p_position.top;
        3. scrollTop()和scrollLeft() , 获取元素的滚动条距顶端的距离和距左侧的距离
          1. var scrollTop = $("p").scrollTop();
          2. var scrollLeft = $("p").scrollLeft();
          3. $("textarea").scrollTop(300);  // 设置元素的垂直滚动条滚动到相应的位置
          4. $("textarea").scrollLeft(300);  // 设置元素的水平滚动条滚动到相应的位置

jQuery中的事件和动画:

  1. jQuery中的事件
    1. 加载DOM 
      1. $(document).ready();  // DOM树解析完毕即执行
      2. $(window).load();  // 在所有内容准备好时触发
      3. $(function(){//代码});  // 简写方式 = $(document).ready();
    2. 事件绑定
      1. bind(type[,data],fn) //type为jQuery的事件类型,如blur,focus,click,keyup,resize,load,scroll,unload,mousedown,mouse up,change,select等。data可选,作为event.data传给fn。fn为绑定的数据处理函数
      2. $("#panel h5.head").bind("click",function(){$(this).next("div.content").show()}); //点击标题显示下面隐藏的div(class=content)中的内容。
    3. 合成事件
      1. hover(enter,leave) 
        1. jQuery用于模拟鼠标悬停事件。当移动到元素上面时,触发第一个事件。当移出元素时,触发第二个事件
        2. $(function(){$("#panel h5.head").hover(function(){$(this).next("div.content").show},function(){$(this).next("div.content").hide();});});
      2. toggle(fn1,fn2,fn3,fn4…); 
        1. 第一次单击触发fn1,第二次单击触发fn2….
        2. toggle()还有个作用是,切换元素的可见状态
    4. 事件冒泡
      1. 定义冒泡
        1. 举例来说,点击了一个span,触发了一个click事件,但这个同时依次触发了span外的div,body的click事件。这就是js定义的事件冒泡。
      2. 阻止冒泡
        1. 事件对象
          1. $(element).bind("click",function(event){ // event就是事件对象}); //当element单击时,event就被创建了,但是事件处理函数执行完毕后,event即被销毁。
        2. 停止事件冒泡
          1. event.stopPropagation();  // 停止事件冒泡
        3. 阻止元素的默认行为
          1. event.preventDefault();  // 如果event在button上,则阻止button的submit
        4. return false;更为简洁,但其同时达成2和3。具体情况下要辨证使用。
        5. 事件捕获
          1. 事件捕获和事件冒泡是刚好完全相反的两个过程  // 顺序是 body -> div -> span
          2. 不是所有浏览器都支持事件捕获
          3. jQuery不支持事件捕获
    5. 事件对象的属性
      1. event.type()方法获取事件的类型
      2. event.preventDefault()方法阻止事件对象的默认行为
      3. event.stopPropagation()方法阻止事件冒泡
      4. event.target属性 获取到触发事件的元素  // 元素为event.target
      5. event.relatedTarget属性  // 元素为event.relatedTarget
        1. 对于mouseout事件,得到的是mouseout后即将进入的元素。对于mouseover,得到的是mouseout后即将离开的元素。
      6. event.pageX , event.pageY 属性
        1. 获取到光标相对于整个页面的x坐标和y坐标
      7. event.which属性
        1. 在鼠标单击事件中获取鼠标的左中右键,值分别是1,2,3
      8. event.metaKey属性
        1. 在键盘事件中获取ctrl按键
      9. event.orginalEvent
        1. 指向原始的事件对象
    6. 移除事件
      1. event.unbind([type][,data]);移除绑定
      2. $("a.unbind").unbind(); // 移除所有绑定事件
      3. $("a.unbind").unbind("click"); // 移除所有绑定的点击事件
      4. 单独移除一个绑定事件
        1. $("a.bind").bind("click",myfun1 = function(){ // 事件处理 });
        2. $("a.bind").unbind("click",myfun1);
      5. $("a.unbind").one();
        1. 这个方法适用于只触发一次,之后就要立即解除绑定的情况
        2. one(type[,data],fn)  // 和bind的用法一样
    7. 模拟操作
      1. jQuery使用trigger()方法完成模拟操作
      2. $("#btn").trigger("click"); // 当页面装载完毕后就会立刻输出想要的结果
      3. $("#btn").trigger("myclick");  // 可以触发自定义事件
      4. $("$btn").triggerHandler("click");  // 不会触发浏览器默认事件
    8. 其他用法
      1. 绑定多个事件类型
        1. $("div").bind("mouseover mouseout",function(){$(this).toggleClass("over");});
      2. 添加事件命名空间
        1. $("div").bind("click.plugin",function(){.....});
        2. $("div").bind("mouseover.plugin",function(){......});
        3. $("div").bind("dbclick",function(){.......});
        4. $("div").unbind(".plugin");  //  移除plugin命名空间中的事件
      3. 相同事件名称,不同命名空间执行方法
        1. $("div").bind("click.plugin",function(){.....});
        2. $("div").bind("click",function(){......});
        3. $("div").trigger("click!");  // 仅执行不包含在命名空间中的方法
        4. $("div").trigger("click");  //  执行所有click事件
  2. jQuery中的动画
    1. show() 和 hide() 方法
      1. 要求工作在xhtml标准模式下,否则会引起抖动
      2. show("slow") 和 show(1000) 触发动画事件
      3. 同时改变元素的高、宽和不透明度,最后设置display=none
    2. fadeIn() 和 fadeOut() 方法
      1. 只改变不透明度,最后设置display=none
      2. 同样可以设置动画时间
    3. slideUp() 和 slideDown() 方法
      1. 只改变元素的高度,且分别是由下到上隐藏和由上到下显示
    4. slow、normal、fast参数分别代表 0.6、0.4、0.2秒
    5. 自定义动画方法animate()
      1. 语法: animate(params, speed, callback) params:样式属性和值的映射  speed:速度  callback:回调函数
      2. $("#panel").animate({left:"500px"}, 3000);  //  panel元素3秒向右移动到距左边界500px的位置
      3. params = {left:"+=50px"} //  表示在当前位置累加或累减
      4. params = {left:"500px",height:"200px"}  //  多重动画
      5. $("#panel").animate({left:"500px"},3000).animate({height:"200px"},3000);  //  按顺序执行动画
      6. $("#panel").click(function(){$(this).animate({left:"300px",height:"200px",opacity:"1"},3000).animate({top:"200px",width:"200px",300}).fadeOut(300);});
    6. 使用动画回调函数对非动画方法进行排队,原因是如果写在动画方法队列里面并不能保证按顺序执行,有可能一开始就执行了。
    7. 停止动画和判断是否处于动画状态
      1. stop([clearQueue][,gotoEnd]) //  停止动画的状态
         
      2. clearQueue 表示清空未执行完的动画队列,gotoEnd表示直接将正在执行的动画跳转到末状态
      3. stop()不带参数会结束当前执行的动画,并立即执行队列中的下一个动画
        1. 等同于stop(false,true);
      4. jQuery只能设置正在执行的动画的最终状态,没有提供直接到达未执行动画队列的最终状态的方法
      5. $(element).is(":animated") 元素是否正处于动画状态
    8. 其他动画方法
      1. toggle(speed[,callback])
      2. slideToggle(speed[,callback]) 通过元素高度的变化
      3. fadeTo(speed,opacity[,callback])
    9. 撒旦发射
    10. <pre></pre>
                     $( 'tbody>tr' ).click( function (){
     if ($( this ).hasClass( "highlight" )) {
         $( this )
             .removeClass( "highlight" )
             .find( ":checkbox" ).attr( "checked" , false );
     } else {
         $( this )
             .addClass( "highlight" )
             .find( ":checkbox" ).attr( "checked" . true );
     }
});
    1. 撒旦法
jQuery对表单、表格的操作:
  1. 表单应用
    1. 单行文本框应用
      1. $(":input").focus(function(){$(this).addClass("focus")});
    2. 多行文本框应用
      1. 高度变化
        var $comment = $("#comment");
         $comment.height($comment.height() +- 50);
        if($comment.is(":animated"))
        $comment.animate({height : "+=50"},300);
      2. 滚动条变化
        1. $comment.animate({scrollTop : "+=50"},400);
    3. 复选框应用
      1. // 全选是 

$("CheckAll").click(function() {
    $("[name=items]:checkbox").attr("checked",true);
 

});

    1. //反转选择项
    2. $("CheckRev").click(function(){
          $("[name=items]:checkbox).each(function(){
              $(this).attr("checked",!$(this).attr("checked"));
              // 或者也可以这样写
          });
    3. });
      1. $("CheckRev").click(function() {
            $("[name=items]:checkbox").each(function(){
                $(this).attr("checked",!$(this).attr("checked"));
                //或者
                this.checked != this.checked;
            });
        });

         
      2. //输出选中项
        $("#send").click(function() {
            var str = '';
            $("[name=items]:checkbox").each(function() {
                str += $(this).val();
            });
        });

         
      3. //用checkbox控制
        $("#checkbox").click(function() {
        $("[name=items]:checkbox").attr("checked",this.checked);
        });

         
    1. 下拉框应用
      1. var $options = $("#select1 option:selected");
        $options.appendTo("#select2");   // 追加和删除可以直接用appendTo完成
         

         
      2. $("#select").dblclick(function(){
            $("option:selected",this).appendTo("#select2");
        });

         
    2. 表单验证
      1. // blur , keyup , focus 实现表单实时验证
        $("form :input").blur(function(){
            //处理代码
        }).keyup(function(){
            $(this).triggerHandler("blur");
        }).focus(function(){
            $(this).triggerHandler("blur");
        });

         
      2. // 一个表单验证示例(form验证的骨架代码)
        $("form :input").blur(function(){
            var $parent = $(this).parent();  // 用于附加提示信息

            if( $(this).is('#username') ) {
            //  处理代码…..    
            }

            if( $(this).is('#password') ) {
            // ……..
            }
        });

         
  1. 表格应用
    1. // 隔行变色
      $(function(){
          $("tbody>tr:odd").addClass("odd");
          $("tbody>tr:even").addClass("even");
      });

       
    2. // 单击tr高亮
      $(function(){
          $("tbody>tr").click(function(){
              $(this)
                   .addClass("highlight")
                   .silibings().removeClass("highlight");
          });
      });

       
    3. // 复选框,tr高亮
    1. $("tr.parent").click(function(){
          $(this)
          .toggleClass("selected")
          .sibilings(".child_"+this.id).toggle();     //隐藏用id划分的子行,形成开闭效果。
      });

       

       

       

       
      $('tbody>tr').click(function(){
          if($(this).hasClass("highlight")) {
              $(this)
                  .removeClass("highlight")
                  .find(":checkbox").attr("checked",false);
          } else {
              $(this)
                  .addClass("highlight")
                  .find(":checkbox").attr("checked".true);
          }
      });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值