jQuery基础

作者: 饥人谷_Leon | 来源:发表于2017-07-29 16:53 被阅读0次

    题目1: jQuery 能做什么

    jQuery 是一个高效、精简并且功能丰富的 JavaScript 工具库。它提供的 API 易于使用且兼容众多浏览器,这让诸如 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作更加简单。

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

    区别

    • 1、jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型,两者不等价;
    • 2、jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法. 乱使用会报错。

    转化
    jQuery对象转成DOM对象: 两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index);
    (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。代码如下:

    var $v =$("#v") ; //jQuery对象 
    var v=$v[0]; //DOM对象 alert(v.checked) //检测这个checkbox是否被选中
    

    (2)jQuery本身提供,通过.get(index)方法,得到相应的DOM对象 如:代码如下:

    var $v=$("#v"); //jQuery对象
     var v=$v.get(0); //DOM对象
     alert(v.checked) //检测这个checkbox是否被选中
    

    DOM对象转成jQuery对象: 对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。$(DOM对象) 如:

    var v=document.getElementById("v"); //DOM对象
     var $v=$(v); //jQuery对象
    

    转换后,就可以任意使用jQuery的方法了。 通过以上方法,可以任意的相互转换jQuery对象和DOM对象。需要再强调注意的是:DOM对象才能使用DOM中的方法,jQuery对象是不可以用DOM中的方法。
    参考文档

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

    • .on()方法 提供绑定事件处理的所有功能。并且比.click(function(){})占用内存小,推荐使用.

    .on( events [, selector ] [, data ], handler(eventObject) )(jQuery 1.7添加)
    事件名称可以添加指定的event namespaces(命名空间) 来简化删除或触发事件。例如,"click.myPlugin.simple"为 click 事件同时定义了两个命名空间 myPlugin 和 simple。通过上述方法绑定的 click 事件处理,可以用.off("click.myPlugin") 或 .off("click.simple")删除绑定到相应元素的Click事件处理程序,而不会干扰其他绑定在该元素上的“click(点击)” 事件。

    $('xxx').on.('click','a',function(){})//例子
    
    • bind:从jQuery 1.7开始,on方法是将事件处理程序绑定到文档(document)的首选方法。对于早期版本,.bind()方法用于直接附加一个事件处理程序到元素上。处理程序附加到jQuery对象中当前选中的元素,所以,在.bind()绑定事件的时候,这些元素必须已经存在。
    • delegate:从jQuery 1.7开始,.delegate()已经被.on()方法取代。但是,对于早期版本,它仍然是使用事件代理(委派)最有效的方式。以下两种是两种方法的等效方法:
    // jQuery 1.4.3+
    $( elements ).delegate( selector, events, data, handler );
    // jQuery 1.7+
    $( elements ).on( events, selector, data, handler );
    
    • live:从jQuery1.7开始, .live()方法已经过时了。请使用.on()附加事件处理程序。 旧版本的jQuery中用户,应优先使用.delegate()来取代.live()。
    $(selector).live(events, data, handler);                // jQuery 1.3+
    $(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
    $(document).on(events, selector, data, handler);        // jQuery 1.7+
    
    
    • off:off()方法移除用.on()绑定的事件处理程序。如果一个简单的事件名称,比如提供"click",那么所有 这种类型的事件(包括直接和委派)从元素上被移除。对于写插件,或者基于大型代码而编程时,最好是通过名字空间进行事件绑定或移除操作,这样就不会意外的移除其它代码添加的事件处理函数。在一个特定的命名空间中的所有类型的事件,可以从一个元素中删除,只是提供了一个命名空间,比如 ".myPlugin"。在移除事件处理时,至少要提供名字空间或事件名.

    on事件代理

    • 优势:可以给未创建的后代元素绑定事件外,代理事件的另一个好处就是,当需要监视很多元素的时候,代理事件的开销更小。
      例如,在一个表格的 tbody 中含有 1,000 行,下面这个例子会为这 1,000 元素绑定事件:
    $("#dataTable tbody tr").on("click", function(event){
      alert($(this).text());
    });
    

    委派事件的方法只有一个元素的事件处理程序,tbody,并且事件只会向上冒泡一层(从被点击的tr 到 tbody ):

    $("#dataTable tbody").on("click", "tr", function(event){
      alert($(this).text());
    });
    

    注意: 委托事件不能用于SVG.
    使用对象同时添加多个事件处理函数

    <!DOCTYPE html>
    <html>
    <head>
      <style>
    .test { color: #000; padding: .5em; border: 1px solid #444; }
    .active { color: #900;}
    .inside { background-color: aqua; }
    </style>
      <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
    </head>
    <body>
      <div class="test">test div</div>
    <script>$("div.test").on({
      click: function(){
        $(this).toggleClass("active");
      },
      mouseenter: function(){
        $(this).addClass("inside");
      },
      mouseleave: function(){
        $(this).removeClass("inside");
      }
    });</script>
     
    </body>
    </html>
    

    参考文档
    JQuery中文API

    题目4:jQuery 如何展示/隐藏元素?

    • 隐藏元素:.hide( [duration ] [, easing ] [, complete ] )
    • 展示元素:.show( [duration ] [, easing ] [, complete ] )

    题目5: jQuery 动画如何使用?

    • $('xxx').animate( properties [, duration ] [, easing ] [, complete ] )
      描述: 根据一组 CSS 属性,执行自定义动画。

    Example: 第一个按钮要执行的动画中,使用了 queue: false 选项,该动画使元素的宽度扩大到了总宽 90%,并且 文字大小也变大了。一旦字体大小改变完了,边框的动画就会开始。 第二个按钮要执行的动画中,包含了一系列动画,当前一个动画完成时,后一个动画就会开始。

    <!DOCTYPE html>
    <html>
    <head>
      <style>
    div {
      background-color:#bca;
      width:200px;
      height:1.1em;
      text-align:center;
      border:2px solid green;
      margin:3px;
      font-size:14px;
    }
    button {
      font-size:14px;
    }
    </style>
      <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
    </head>
    <body>
      <button id="go1">&raquo; Animate Block1</button>
    <button id="go2">&raquo; Animate Block2</button>
    <button id="go3">&raquo; Animate Both</button>
     
    <button id="go4">&raquo; Reset</button>
    <div id="block1">Block1</div>
    <div id="block2">Block2</div>
    <script>
     
    $( "#go1" ).click(function(){
      $( "#block1" ).animate( { width: "90%" }, { queue: false, duration: 3000 })
         .animate({ fontSize: "24px" }, 1500 )
         .animate({ borderRightWidth: "15px" }, 1500 );
    });
     
    $( "#go2" ).click(function(){
      $( "#block2" ).animate({ width: "90%" }, 1000 )
         .animate({ fontSize: "24px" }, 1000 )
         .animate({ borderLeftWidth: "15px" }, 1000 );
    });
     
    $( "#go3" ).click(function(){
      $( "#go1" ).add( "#go2" ).click();
    });
     
    $( "#go4" ).click(function(){
      $( "div" ).css({ width: "", fontSize: "", borderWidth: "" });
    });
     
    </script>
     
    </body>
    </html>
    

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

    • $('xxx').html()不加参数就是获取集合中第一个匹配元素的HTML内容.
      $('xxx').html(htmlString)设置每一个匹配元素的html内容.
    • $('xxx').text()得到匹配元素集合中每个元素的文本内容结合,包括他们的后代,
      $('xxx').text(textSting)设置匹配元素集合中每个元素的文本内容为指定的文本内容.

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

    • $().val()获取匹配的元素集合中第一个元素的当前值
      .val()方法主要用于获取表单元素的值,比如 input, select 和 textarea。对于 <select multiple="multiple"> 元素, .val()方法返回一个包含每个选择项的数组,如果没有选择性被选中,它返回null。
    • $().val(value)设置匹配的元素集合中每个元素的值例子
    <!DOCTYPE html>
    <html>
    <head>
      <style>
     
      p { color:blue; margin:8px; }
      </style>
      <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
    </head>
    <body>
      <input type="text" value="some text"/>
      <p></p>
    <script>
        $("input").keyup(function () {
          var value = $(this).val();
          $("p").text(value);
        }).keyup();
    </script>
     
    </body>
    </html>
    
    <!DOCTYPE html>
    <html>
    <head>
      <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
    </head>
    <body>
     
      <p>Type something and then click or tab out of the input.</p>
      <input type="text" value="type something" />
     
    <script>
      $('input').bind('blur', function() {
        $(this).val(function( i, val ) {
          return val.toUpperCase();
        });
      });
      </script>
     
    </body>
    </html>
    
    • $('xxx").attr(attributeName)获取匹配的元素集合中的第一个元素的属性的值
    • $('xxx").attr(attributeName,value)设置每一个匹配元素的一个或多个属性。
    $('#greatphoto')
    .attr('title', 'Photo by Kelly Clark')
    
    $('#greatphoto').attr({
      alt: 'Beijing Brush Seller',
      title: 'photo by Kelly Clark'
    });
    

    相关文章

      网友评论

        本文标题:jQuery基础

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