zoukankan      html  css  js  c++  java
  • jquery思想和方法

    jquery是什么?
    一系列函数的集合,是别人封装好的函数,自己拿去调用就OK了

    主要就是用更少的代码实现更多的功能

    比如:页面上有两个按钮,一张图片,当点击hidden按钮时隐藏图片,当点击show按钮时显示图片

    一般情况,利用DOM技术,当点击按钮时触发onclick事件进而引发一个函数,但代码很长

    如果用jquery,如$("#ID"),它的本质是一个函数,$其实只是一个方法名而已,#ID是函数的形参,这样做给了我们一个假象,就是只需要调用这个函数就能够定位到某个节点,这样代码就会简洁很多,不需要通过document.getElementById();document.getElementsByTagName();document.ElementsByName()来实现

    get( )和eq( )的区别

    eq返回的是一个jquery对象,get返回的是一个html 对象数组
    返回的是jQuery对象,就可以继续调用其他方法,返回的是html数组就不能调用jQuery的其他方法

    <p style="color:red">颜色</p>
    使用eq来获得第一个p标签的color值: 
    $("p").eq(0).css("color") //因为eq(num)返回的是个jq对象,所以可以用jq的方法css使用get来获得第一个p标签的color值: 
    $("p").get(0).style.color //因为get(num)返回的是个html对象,所以要使用传统的HTML对象方法,jq对象此时就没用了。
    当然,也可以get(num)后把对象转为jq的对象再进行操作: 
    $($("p").get(0)).css("color")

    选择网页元素

    jQuery的基本设计思想和主要用法,就是选择某个网页元素,然后对其进行某种操作

    选择表达式可以是CSS选择器

    $(document) //选择整个文档对象
    $('#myId') //选择ID为myId的网页元素
    $('div.myClass') // 选择class为myClass的div元素
    $('input[name=first]') // 选择name属性等于first的input元素

    也可以是jQuery自己的表达式

    $('a:first') //选择网页中第一个a元素
    $('tr:odd') //选择表格的奇数行
    $('#myForm :input') // 选择表单中的input元素
    $('div:visible') //选择可见的div元素
    $('div:gt(2)') // 选择所有的div元素,除了前三个
    $('div:animated') // 选择当前处于动画状态的div元素

    链式操作

    比如:$('div').find('h3').eq(2).html('Hello');

    分解开就是:

    $('div') //找到div元素

    .find('h3') //选择其中的h3元素

    .eq(2) //选择第3个h3元素

    .html('Hello'); //将它的内容改为Hello

    jQuery还提供了.end()方法,使得结果集可以后退一步

    取值和赋值

    $('h1').html();  //html()没有参数,表示取出h1的值

    $('h1').html('Hello');  //html()有参数Hello,表示对h1进行赋值

    常见的几个:

    .html() 取出或设置html内容

    .text() 取出或设置text内容

    .attr() 取出或设置某个属性的值

    .width() 取出或设置某个元素的宽度

    .height() 取出或设置某个元素的高度

    .val() 取出某个表单元素的值

    移动

    第一种方法是使用.insertAfter(),把div元素移动p元素后面:

    $('div').insertAfter($('p'));

    把所有段落插入到一个元素之后。与 $("#foo").after("p")相同
    HTML 代码:
    <p>I would like to say: </p><div id="foo">Hello</div>
    jQuery 代码:
    $("p").insertAfter("#foo");
    结果:
    <div id="foo">Hello</div><p>I would like to say: </p>

    第二种方法是使用.after(),把p元素加到div元素前面:

    $('p').after($('div'));

    把所有段落插入到一个元素之前。与 $("#foo").before("p")相同。
    
    HTML 代码:
    <div id="foo">Hello</div><p>I would like to say: </p>
    jQuery 代码:
    $("p").insertBefore("#foo");
    结果:
    <p>I would like to say: </p><div id="foo">Hello</div>

    四对操作方法:

    .insertAfter()和.after():在现存元素的外部,从后面插入元素

    .insertBefore()和.before():在现存元素的外部,从前面插入元素

    .appendTo()和.append():在现存元素的内部,从后面插入元素

    .prependTo()和.prepend():在现存元素的内部,从前面插入元素

    事件操作:把事件直接绑定在网页元素之上。

    $('p').click(function(){
    
        alert('Hello');
    
      });

    jquery中的事件

    .blur() 表单元素失去焦点。

    触发所有段落的blur事件
    
    $("p").blur();

    .change() 表单元素的值发生变化

    触发被选元素的 change 事件。
    
    $(selector).change();

    .click() 鼠标单击

    .dblclick() 鼠标双击

    .focus() 表单元素获得焦点

    .focusin() 子元素获得焦点

    .focusout() 子元素失去焦点

    .hover() 同时为mouseenter和mouseleave事件指定处理函数

    .keydown() 按下键盘(长时间按键,只返回一个事件)

    在页面内对键盘按键做出回应,可以使用如下代码:
    
    jQuery 代码:
    $(window).keydown(function(event){
      switch(event.keyCode) {
        // ...
        // 不同的按键可以做不同的事情
        // 不同的浏览器的keycode不同
        // 更多详细信息:     http://unixpapa.com/js/key.html
        // ...
      }
    });

    .keypress() 按下键盘(长时间按键,将返回多个事件)

    .keyup() 松开键盘

    .mousedown() 按下鼠标

    .mouseenter() 鼠标进入(进入子元素不触发)

    .mouseleave() 鼠标离开(离开子元素不触发)

    .mousemove() 鼠标在元素内部移动

    .mouseout() 鼠标离开(离开子元素也触发)

    .mouseover() 鼠标进入(进入子元素也触发)

    .mouseup() 松开鼠标

    .ready() DOM加载完成

    .resize() 浏览器窗口的大小发生改变

    .scroll() 滚动条的位置发生变化

    .select() 用户选中文本框中的内容

    触发所有input元素的select事件:
    
    $("input").select();
    当文本框中文本被选中时执行的函数:
    
    $(":text").select( function () { /* ...do something... */ } );

    .submit() 用户递交表单

    .toggle() 根据鼠标点击的次数,依次运行多个函数

    .unload() 用户离开页面

    事件运行一次,可以使用.one()方法
    $("p").one("click", function() {
    
       alert("Hello"); //只运行一次,以后的点击不会运行
    
    });

    事件对象:所有的事件处理函数,都可以接受一个事件对象作为参数

    $("p").click(function(e) {
    
       alert(e.type); // "click"
    
    });

    事件对象的属性和方法:

    event.pageX 事件发生时,鼠标距离网页左上角的水平距离

    event.pageY 事件发生时,鼠标距离网页左上角的垂直距离

    event.type 事件的类型(比如click)

    event.which 按下了哪一个键

    event.data 在事件对象上绑定数据,然后传入事件处理函数

    event.target 事件针对的网页元素

    event.preventDefault() 阻止事件的默认行为(比如点击链接,会自动打开新页面)

    event.stopPropagation() 停止事件向上层元素冒泡

     

    工具函数

    字符串操作
    $.trim():去除字符串左右两边的空格

    去掉字符串起始和结尾的空格。
    
    $.trim("  hello, how are you?  ");


    数组和对象操作
    $.each()
      遍历数组
      $.each(array,function(index,value){}):array:数组变量,index:元素下标,从0开始,value:元素值
      遍历对象
      $each(object,function(name,value){}):object:对象,name:属性名,value:属性值

    例遍数组,同时使用元素索引和内容。
    
    jQuery 代码:
    $.each( [0,1,2], function(i, n){
      alert( "Item #" + i + ": " + n );
    });
    例遍对象,同时使用成员名称和变量内容。
    
    jQuery 代码:
    $.each( { name: "John", lang: "JS" }, function(i, n){
      alert( "Name: " + i + ", Value: " + n );
    });


    $.inArray():查找元素的下标
    $.inArray(value,array):value:元素值,array:查找的数组,返回元素在数组中的下标,从0开始
    $.merge():合并两个数组
    $.merge(array1,array2):将第二个数组加到第一个数组后面
    $.unique():去除重复DOM元素
    $.unique(dom):dom:DOM元素
    .toArray():把jQuery集合中所有DOM元素恢复成一个数组。
    .parseJSON(json):接受一个JSON字符串,返回解析后的对象。
    .parseXML(data):解析一个字符串到一个XML文件。


    $extend():用一个或多个其他对象来扩展一个对象,返回被扩展的对象。
      jQuery.fn.extend(object);给jQuery对象添加方法。
      jQuery.extend(object); 为扩展jQuery类本身,为自身添加新的方法。

    jQuery.fn = jQuery.prototype 即指向jQuery对象的原型链,对其它进行的扩展,作用在jQuery对象上面;

    一般用此方法来扩展jQuery的对象插件   

    将hello方法合并到jquery的实例对象中。
    
     $.fn.extend({
    
          hello:function(){alert('hello');}
    
      });
    在jquery全局对象中扩展一个net命名空间。
    
     $.extend($.net,{
    
           hello:function(){alert('hello');}
    
     });  //使用jQuery.net.hello();
    增加两个插件方法。
    
    jQuery 代码:
    jQuery.fn.extend({
      check: function() {
        return this.each(function() { this.checked = true; });
      },
      uncheck: function() {
        return this.each(function() { this.checked = false; });
      }
    });
    
    结果:
    $("input[type=checkbox]").check();
    $("input[type=radio]").uncheck();

    $.map( ):将一个数组中的元素转换到另一个数组中。

    将原数组中每个元素加 4 转换为一个新数组。
    
    jQuery 代码:
    $.map( [0,1,2], function(n){
      return n + 4;
    });
    
    结果:
    [4, 5, 6]
    原数组中大于 0 的元素加 1 ,否则删除。
    
    jQuery 代码:
    $.map( [0,1,2], function(n){
      return n > 0 ? n + 1 : null;
    });
    结果:
    [2, 3]
    原数组中每个元素扩展为一个包含其本身和其值加 1 的数组,并转换为一个新数组。
    
    jQuery 代码:
    $.map( [0,1,2], function(n){
      return [ n, n + 1 ];
    });
    结果:
    [0, 1, 1, 2, 2, 3]

    .toArray():把jQuery集合中所有DOM元素恢复成一个数组。
    .parseJSON(json):接受一个JSON字符串,返回解析后的对象。
    .parseXML(data):解析一个字符串到一个XML文件。

    测试操作
    $.isArray():判断是否为数组对象,返回boolean
    $.isFunction():判断是否为函数,返回boolean
    $.isEmptyObject():判断是否为空对象,返回boolean
    $.isPlainObject():判断是否为纯粹对象,返回boolean
    $.contains():判断DOM节点是否包含另一个DOM节点
    $.type():输出数据类型,返回对象的数据类型
    $.isNumeric():判断是否为数值类型
    $.isWindow():判断是否为Window对象

    URL操作
    $param():将对象的键值对转化为URL键值对字符串形式
      $param(object):object:需要转化的对象
    .error(message):接受一个字符串,并且直接抛出一个包含这个字符串的异常。

    插件编写
    .error(message):接受一个字符串,并且直接抛出一个包含这个字符串的异常。
    $.fn.jquery:代表 jQuery 版本号的字符串。
    其他操作
    $.proxy():调整this的指向
    外部事件触发调用对象方法时,this指向会有问题(会调用触发的对象)

    特殊效果

    显示隐藏:可设置函数和线性运动

    $("p").hide();隐藏   

    $("p").show();显示  

    $("p").toggle(); 隐藏的时候显示,显示的时候隐藏

    淡入淡出

    fadeIn() 淡入已隐藏的元素

    fadeout() 淡出可见元素

    $('h1').fadeIn(300); // 300毫秒内淡入
    
    $('h1').fadeOut('slow'); // 缓慢地淡出

    fade Toggle() 方法 淡出就淡入 淡入就淡出

    fadeTo()  把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数。

    滑动

    slideDown();向下滑动   slideUp(); 向上滑动  slideToggle(); 反过来滑动

    动画

    animate()创建动画  可以操作多个属性  height opacity等  也可以使用相对值  “+=”

    点击按钮后div元素的几个不同属性一同变化
    
    HTML 代码:
    <button id="go"> Run</button>
    <div id="block">Hello!</div>
    
    jQuery 代码:
    // 在一个动画中同时应用三种类型的效果
    $("#go").click(function(){
      $("#block").animate({ 
         "90%",
        height: "100%", 
        fontSize: "10em", 
        borderWidth: 10
      }, 1000 );
    });
  • 相关阅读:
    Hdfs详解
    HDFS主要特性和体系结构
    HDFS简单入门
    使用docker搭建hadoop分布式集群
    HDFS理论及安装部署
    Android开发之模拟器genymotion安装apk出现错误: Install_failed_invalid_URI
    Android开发之最火的开源框架之一Xutils2详解(摘自开源作者官方介绍详解)
    Java开发之javaEE(java2EE)的介绍,java软件工程师初步阶段知识
    拾色器,可以取出电脑屏幕的任何颜色,ui以及程序员前端等常用软件,文件很小,300K
    Android开发必有功能,更新版本提示,检测是否有新版本更新。下载完成后进行安装。
  • 原文地址:https://www.cnblogs.com/conlover/p/11244109.html
Copyright © 2011-2022 走看看