jQuery简单介绍

作者: 饥人谷_Jack | 来源:发表于2017-10-27 03:20 被阅读0次

    题目1: jQuery 能做什么?

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

    • DOM原生对象:
      • 是对象;
      • 拥有原生对象的属性和方法;
    • jQuery对象:
      • 是DOM元升级对象经过包装之后,拥有jQuery的属性和方法(对原生DOM对象的封装);
      • 是类数组;
    $('body')[0]//可以转为DOM原生对象
    $(document.querySelector('body))//可以转为jQuery对象
    

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

    • bind(type,[data],fn)
      为每个匹配元素的特定事件绑定事件处理函数。jQuery 3.0中已弃用此方法,请用 on()代替。
    $("p").bind("click", function(){
      alert( $(this).text() );
    });
    
    • unbind(type,[data|fn]])
      bind()的反向操作,从每一个匹配的元素中删除绑定的事件。
      jQuery 3.0中已弃用此方法,请用 off()代替。
      如果没有参数,则删除所有绑定的事件。
      你可以将你用bind()注册的自定义事件取消绑定。
      如果提供了事件类型作为参数,则只删除该类型的绑定事件。
      如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。
    var foo = function () {
      // 处理某个事件的代码
    };
    
    $("p").bind("click", foo); // ... 当点击段落的时候会触发 foo 
    
    $("p").unbind("click", foo); // ... 再也不会被触发 foo
    
    • delegate(selector,[type],[data],fn)
      指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
      jQuery 3.0中已弃用此方法,请用 on()代替。
      使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
    <div style="background-color:red">
    <p>这是一个段落。</p>
    <button>请点击这里</button>
    </div>
    
    $("div").delegate("button","click",function(){
      $("p").slideToggle();
    });
    
    • live(type, [data], fn)
      jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。
      从 jQuery 1.7 开始,不再建议使用 .live() 方法。请使用 .on() 来添加事件处理。使用旧版本的用户,应该优先使用 .delegate() 来替代 .live()。
    $("p").live("click", function(){
        $(this).after("<p>Another paragraph!</p>");
    });
    
    • on(events,[selector],[data],fn)
      在选择元素上绑定一个或多个事件的事件处理函数。
      on()方法绑定事件处理程序到当前选定的jQuery对象中的元素。在jQuery 1.7中,.on()方法 提供绑定事件处理程序所需的所有功能。帮助从旧的jQuery事件方法转换,see .bind(), .delegate(), 和 .live(). 要删除的.on()绑定的事件,请参阅.off()。要附加一个事件,只运行一次,然后删除自己, 请参阅.one()
    function myHandler(event) {
    alert(event.data.foo);
    }
    $("p").on("click", {foo: "bar"}, myHandler)
    
    • off(events,[selector],[fn])
      在选择元素上移除一个或多个事件的事件处理函数。
      off() 方法移除用.on()绑定的事件处理程序。有关详细信息,请参阅该网页上delegated和directly绑定事件。特定的事件处理程序可以被移除元素上提供事件的名称,命名空间,选择器,或处理函数名称的组合。当有多个过滤参数,所提供的参数都必须匹配的事件处理程序被删除。
    var validate = function () {
      // code to validate form entries
    };
    // delegate events under the ".validator" namespace
    $("form").on("click.validator", "button", validate);
    $("form").on("keypress.validator", "input[type='text']", validate); 
    // remove event handlers in the ".validator" namespace
    $("form").off(".validator");
    

    推荐使用.on()、.off()

    $('ul').on('click','li',function(){
    console.log()this
    })
    

    题目4:jQuery 如何展示/隐藏元素?题目5: jQuery 动画如何使用?

     <style>
        .box {
          width: 100px;
          height: 100px;
          background-color: red;
          position: relative;
        }
        ul>li {
          list-style: none;
          border: 1px solid;
        }
         p {
           display: none;
         }
      </style>
    
      <div class="box"></div>
      <ul>
        <li>
          <h1>我是标题1</h1>
          <p>我是段落1</p>
        </li>
        <li>
          <h1>我是标题2</h1>
          <p>我是段落2</p>
        </li>
        <li>
          <h1>我是标题3</h1>
          <p>我是段落3</p>
        </li>
      </ul>
      <button id="show">显示</button>
      <button id="hide">隐藏</button>
      <button id="more">多个动画</button>
      <button id="finish">完成</button>
      <button id="stop">停止</button>
    
      <script>
        var $box = $('.box')
        $('#show').on('click', function () {
          $box.show(1000, function () {
            $(this).text('animation is done')
          })
        })
        $('#hide').on('click', function () {
          $box.hide(1000)
        })
        $('ul').on('click','li',function () {
          $(this).find('p').toggle(1000)//动态效果为从右至左。横向动作。
          $(this).find('p').slideToggle(1000)//动态效果为从下至上。竖向动作。
          $(this).find('p').slideUp(1000)//通过高度变化(向上减小)来动态地隐藏示所有匹配的元素
          $(this).siblings().find('p').slideDown(1000)//通过高度变化(向下增大)来动态地显示所有匹配的元素
          $(this).find('p').fadeIn(1000)//通过不透明度的变化来实现所有匹配元素的淡入效果
          $(this).find('p').fadeOut(1000)//通过不透明度的变化来实现所有匹配元素的淡出效果
          $(this).find('p').fadeToggle(1000)//通过不透明度的变化来开关所有匹配元素的淡入和淡出效果
          $(this).find('p').fadeTo(1000,0.36)//把所有匹配元素的不透明度从0以渐进方式调整到指定的不透明度
        })
        $('#more').on('click',function(){
          $box.animate({width:'140px',height:'140px',left:'300px'},1000)
          $box.animate({top:'300px'},1000).animate({left:'0'}).animate({top:'0',width:'100px',height:'100px'})
        })
    
        $('#finish').on('click',function(){
          $box.finish()
        })
        $('#stop').on('click',function(){
          $box.stop(true)
        })
      </script>
    

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

        <ul>
            <li id="li01">
              <h1>我是标题1</h1>
              <p>我是段落1</p>
            </li>
            <li id="li02">
              <h1>我是标题2</h1>
              <p>我是段落2</p>
            </li>
            <li id="li03">
              <h1>我是标题3</h1>
              <p>我是段落3</p>
            </li>
          </ul>
          <script>
            console.log($('ul').html())//获取HTML内容
            $('ul #li01').html('<div>hello jirengu</div>')//设置HTML内容
              console.log($('ul #li02').text())//获取文本内容
              $('ul #li02').text('hello world')//设置文本内容
          </script>
    

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

        console.log($("#username").val())//获取input的值
        $("#username").val('jirengu')//设置input的值
        console.log($("#username").attr('type'))//获取input的type属性
        $("#username").attr('type', 'password')//设置input的type属性值为'password
        $('#city').change(function () {
          console.log($(this).val())//获取select选择时的value
        })
    

    题目8: 使用 jQuery实现如下效果

    sideNav
    题目9
    题目10
    题目10 server.js
    tab切换卡

    相关文章

      网友评论

        本文标题:jQuery简单介绍

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