jQuery

作者: LeeoZz | 来源:发表于2017-07-07 11:55 被阅读0次

    jQuery 能做什么?

    jQuery是一个小巧的,快速的,功能强大的JavaScript库。它通过一些易用的API简化了许多事情,例如:DOM操作、事件监听、动画、AJAX等等。
    jQuery能做的事情,原生JS都能做到,只不过原生JS会更加繁琐,而化繁为简正是jQuery的目的所在。
    write less,do more.

    jQuery对象和DOM原生对象有什么区别?如何转化?

    假设这么一个HTML片段

    <button id="btn1"></button>
    

    我们可以通过jQuery方法或原生DOM方法获取到这个元素节点

    $("#btn1");  //jQuesy方法;
    document.querySelector("#btn1");    //原生DOM方法;
    

    通过这两种方法获得的元素对象是两个完全不一样的对象。
    jQuesy方法获取的称为jQuesy对象,它是一个类数组对象,它有它自己的方法,不能使用原生DOM方法;
    原生DOM方法获取的称为DOM原生对象,它也有它自己的方法,不能使用jQuery的方法;

    两种对象之间可以相互转换

    $("#btn1")[0];  //jQuery对象转为原生DOM对象,用索引获取到对应的元素对象;
    $(document.querySelector("#btn1"));  //DOM元素对象用$包裹,就得到jQuery对象;
    

    jQuery中如何绑定事件?bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?使用on绑定事件使用事件代理的写法?

    在jQuery中,我们可以使用on()方法绑定事件

    $("#btn1").on("click",function() {  //最简单的事件绑定;
        console.log("hello world");
    })
    

    其他的事件绑定方法
    bind(),该方法在3.0以后的版本已经被弃用,用on()代替;
    1.4.3版本,其接受这么几个参数:eventType(事件类型,"click"等)、eventData(传递给事件处理函数的数据)、handler(事件处理函数)、preventBubble(一个Boolean,防止默认事件,阻止事件冒泡)
    由于其只能绑定在已有元素中,新添加的元素不会绑定事件,不够灵活,已弃用;


    unbind(),该方法可以移除bind()方法绑定的事件,不传递参数的情况下,将删除所有的事件,传递参数可以删除指定的事件和事件处理函数


    delegate()方法是1.7版本以前常用的事件代理方法,现已被on()取代。接受这么几个参数:
    selector:选择器字符串,用于过滤触发事件的元素
    evenType:事件类型,多个用空格隔开
    eventData:传递给事件处理程序的数据
    handler:事件处理程序


    live()也是一种事件代理的方法,附加一个事件处理程序到选择器匹配的所有元素,但是它把事件直接绑定在document上,通过相关参数来确定是否触发事件
    events:事件类型
    data:传递给事件处理程序的数据
    handler:事件处理程序
    因为live()是把事件绑定到document上的,导致冒泡链过长,以被弃用。


    on()是现在绑定事件的常用方法,接受这么几个参数
    1.events:一个或多个空格分隔的事件类型和可选的命名空间,或仅仅是命名空间,比如"click", "keydown.myPlugin", 或者 ".myPlugin";
    2.selector:一个选择器字符串,用于过滤出被选中的元素中能触发事件的后代元素。如果选择器是 null 或者忽略了该选择器,那么被选中的元素总是能触发事件;
    3.data:当一个事件被触发时,要传递给事件处理函数的event.data;
    4.handler(eventObject):事件被触发时,执行的函数。若该函数只是要执行returnfalse的话,那么该参数位置可以直接简写成false


    off()方法可以移除on()方法绑定的事件,不传递参数的情况下,将删除所有的事件,传递参数可以删除指定的事件和事件处理函数


    jQuery事件代理写法
    假设HTML片段

    <ul id="container">
        <li>content1</li>
        <li>content2</li>
        <li>content3</li>
    </ul>
    

    我们可以使用on()方法,并提供相关参数,就可以完成事件代理

    //将事件绑定在父容器上,只有满足过滤选择器的的子元素才能触发事件
    $("#container").on("click","li",function() {
        //do something..
    })
    

    jQuery 如何展示/隐藏元素?

    jQuery中通过hide()方法隐藏元素,其接受三个参数:
    [duration]:动画持续多久
    [easing]:表示过渡使用哪种缓动函数,jQuery自身提供"linear" 和 "swing"
    [complete]:在动画完成时执行的函数
    不添加参数时,其方法等同于直接设置元素的display为none
    通过添加参数,该方法可以实现一个渐变的隐藏元素的效果

    $(element).hide()
    --------
    $(element).hide(3000,function() {
        alert("hello world")
    }) 
    

    同样,jQuery中使用show()方法来展示隐藏的元素,使用方法与hide()相同

    jQuery动画如何使用?

    jQuery中通过hide()方法隐藏元素,其接受三个参数
    [duration]:动画持续多久
    [easing]:表示过渡使用哪种缓动函数,jQuery自身提供"linear" 和 "swing"
    [complete]:在动画完成时执行的函数
    不添加参数时,其方法等同于直接设置元素的display为none
    通过添加参数,该方法可以实现一个渐变的隐藏元素的效果

    $(element).hide()
    --------
    $(element).hide(3000,function() {
        alert("hello world")
    }) 
    

    同样,jQuery中使用show()方法来展示隐藏的元素,使用方法与hide()相同
    hide()方法会把元素的display变为none,show()方法会还原元素的display
    toggle()方法用于切换元素的隐藏/显示,参数与hide()``show()相同,它的机制就是元素如果是隐藏的,就显示该元素,如果元素是显示的,就隐藏该元素,来回切换


    fadeIn()/fadeOut用调整元素透明度的方法来显示/隐藏元素,一旦透明度变为0,display将设置为none,接受参数与hide()show()相同
    不设置参数,fadeIn()/fadeOut默认会有渐进显示/隐藏的效果

    $(element).fadeIn()
    $(element).fadeOut()
    

    fadeTo以动画的形式调整元素到指定的透明度,接受这几个参数:
    duration, opacity [, easing ] [, complete ]
    opacity为指定变化的透明度
    当opacity为0时,fadeTo方法不会使元素display为none

    $(element).fadeTo(1000,0.5) //在1s内透明度变化到0.5
    

    fadeToggle会通过改变透明度的方式显示和隐藏元素,如果元素是隐藏的,则显示,显示的,则隐藏,参数与fadeIn()``fadeOut()相同
    fadeToggle在元素透明度为0时,会display为none

    fadeIn()/fadeOutshow()/hide()的区别:
    前者通过调整元素透明度实现元素隐藏和显示,透明度为0时设置display为none。后者通过改变同时元素的width/height/opacity来显示隐藏元素


    slideUp()/slideDown()通过上下滑动来实现元素的隐藏/显示,接受参数与show()/hide()相同
    slideToggle()通过上下滑动的方式切换元素的隐藏/显示


    animate()是自定义动画方法,接受这几个参数
    properties:一个CSS属性和值的对象,动画将根据这组对象进行变化
    [duration]:动画时间
    [easing]:缓动函数
    [complete]:完成动画后的回调函数
    animate()的本质是通过动画的方式把元素的样式变为指定的样式
    animate()可以通过链式调用实现多个动画

    $(element).animate({//something})
              .animate({//something})
              .animate({//something})
              .animate({//something})
    

    多个动画可以整合到一个数组中,对数组进行遍历,执行所有动画

    var action = [{//action1},
                  {//action2},
                  {//action3},
                  {//action4}]
    action.forEach(function(action,index) {
        ${element}.animate(action)
    })
    

    stop()方法可以停止当前动画,它接受2个参数:
    [clearQueue]:一个布尔值,当为true时,当前动画停止,未执行的动画全部删除
    [jumpToEnd]:为true时,当前动画将停止,但该元素上的 css属性会被立刻修改成动画的目标值
    stop()不添加任何参数时,会立即结束掉元素当前动画(不完成),马上进入下一个动画(如果有的话)

    如何设置和获取元素内部 HTML 内容?如何设置和获取元素内部文本?

    在原生DOM中,我们可以使用innerText操作元素文本,innerHTML操作元素内的HTML
    在jQuery中提供了相同功能的方法:html()text()
    当没有传递参数时,获取元素内的innerHTML和innerText;当传递了一个string参数的时候,修改元素的innerHTM和innerText为参数值

    <ul id="container">
        <li>content1</li>
    </ul>
    
    $("#container").html() //"<li>content1</li>"
    $("#container").text() //"content1"
    

    如何设置和获取表单用户输入或者选择的内容?如何设置和获取元素属性?

    val()方法可以用来获取和设置input的value
    当没有传递参数时,获取value的值
    传递一个字符串参数时,将value的值改为参数值
    attr()可以获取指定属性,也可以设置属性

    $(element).attr("id") //获取元素id属性值
    $(element).attr("id","container") //设置元素id值为container
    

    removeAttr()可以删除元素的指定属性

    8

    http://js.jirengu.com/zorowanini/2/edit

    9

    http://js.jirengu.com/kixujacesa/2/edit

    10

    http://js.jirengu.com/gijilonuti/2/edit

    11

    http://js.jirengu.com/vebedekitu/2/edit

    相关文章

      网友评论

        本文标题:jQuery

        本文链接:https://www.haomeiwen.com/subject/tbwqhxtx.html