jQuery选择器_Dom操作_样式_事件处理_动画

题目1: jQuery 能做什么?

  • 方便快捷获取DOM元素
      如果使用纯JavaScript的方式来遍历DOM以及查找DOM的某个部分编写很多冗余的代码,而使用jQuery只需要一行代码就足够了。例如,找到所有应用了.content class样式的div中所有的P标签,只需要下面的一行代码:
    $('div.content').find('p');
  • 动态修改页面样式
      使用jQuery我们可以动态的修改页面的CSS即使在页面呈现以后。jQuery仍然能够改变文档中某个部分的类或者个别的样式属性。例如,找到页面所有的ul标签的第一个li子标签,然后为它们增加名为active的样式,代码如下:
    $('ul > li:first').addClass('active');
  • 动态改变DOM内容
      使用jQuery我们可以很容易地对页面DOM进行修改,例如,为ID为"Container"的元素添加一个链接:
    $('#container').append('<a href="more.html">more</a>');
  • 响应用户的交互操作
      jQuery提供了截获形形色色的页面事件(比如用户单击某个链接)的适当方式,而不需要使用事件处理程序拆散HTML代码。此外,它的事件处理API也消除了经常困扰Web开发人员浏览器的不一致性。
     $('button.show-details').click(function() {
       $('div.details').show();
     });
    
  • 为页面添加动态效果
      jQuery中内置的一批淡入、擦除之类的效果,以及制作新效果的工具包,为此提供了便利。
    $(function () {
     $("#btnShow").click(function () {
       $("#msubject").hide("slow");
      });
    });
    

上面的代码表示:为使用的.show-details样式的button元素添加一个click事件,事件就是:显示使用.details样式的DIV。

  • 统一Ajax操作
      jQuery统一了多种浏览器的Ajax操作,使得开发人员更多的专注服务器端开发。
     function (data, type) {
        // 对Ajax返回的原始数据进行预处理
        return data // 返回处理后的数据
     }
    
  • 简化常见的JavaScript任务。
      除了这些完全针对文档的特性之外,jQuery也改进了对基本的javascript数据结构(例如迭代和数组操作等)。
    $.each(obj, function(key, value) {
       total += value;
    });
    

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

  • DOM原生对象:w3c标准用于操作文档的API。

  • jQuery对象:通过jQuery包装DOM对象后产生的对象。

  • 区别:

    • jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型,两者不等价;
    • jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法. 乱使用会报错。
      例如:
        $("#id").html();
        document.getElementById("id").innerHTML;
        意思是指:获取ID为id的元素内的html代码。这两段代码结果相同,但中间的取值过程不同。
        即:$("#id").innerHTMLdocument.getElementById("id").html()之类的写法都是错误的。
  • 相互转换:
    jQuery对象转成DOM对象---两种转换方式:[index].get(index)

    • jQuery对象是一个数据对象,通过[index]的方法
        如:
        var $v = $("#v") ; //jQuery对象
        var v = $v[0]; //DOM对象
        alert(v.checked) //检测这个checkbox是否被选中
    • jQuery本身提供,通过.get(index)方法
        如:
        var $v = $("#v"); //jQuery对象
        var v = $v.get(0); //DOM对象
        alert(v.checked) //检测这个checkbox是否被选中
      DOM对象转成jQuery对象:
        对于DOM对象,只需用$()把DOM对象包装起来,就可得到jQuery对象
        如:
        var v=document.getElementById("v"); //DOM对象
        var $v=$(v); //jQuery对象

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

  • jQuery绑定事件用bind、或delegate、或live、或on
  • bind() 为一个元素绑定一个事件处理程序,示例如下:
    • $(‘button’).bind(‘click’,function(){console.log(this)});
    • $(‘p’).bind(‘mouseenter mouseleave’,function({$(this).toggleClass(‘change’)});
  • unbind() 从元素上删除一个以前附加事件处理程序,示例如下:
    • $('p').unbind('mouseenter');
      在最简单的情况下,不带参数的.unbind() 将移除元素上所有绑定的处理程序
  • delegate() 为所有匹配选择器(selector参数)的元素绑定一个或多个事件处理函数,基于一个指定的根元素的子集,匹配的元素包括那些目前已经匹配到的元素,也包括那些今后可能匹配到的元素。
  • live() 附加一个事件处理器到匹配目前选择器的所有元素,现在和未来。这种方法是将页面的document元素作为事件代理元素,太消耗资源,已经过时。
  • on() 在选定的元素上绑定一个或多个事件处理函数。
    $('button').on('click',function(){
      $('.test').append('<p>新增内容'+ ($('p').length+1) +'</p>');
       console.log($('p').length);
     });
    
  • off() 移除用.on()绑定的事件处理程序

绑定事件和解绑事件推荐使用on()off()

  • 使用on绑定事件使用事件代理
    //让.ct>ul中的所有li绑定事件
    $('.ct>ul').on('click','li',function(){
      var $this=$(this);
      var str=$this.text();
      $('.wrap').text(str);
    })
    

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

  • jQuery展示元素:
    $('.btn').on('click',function(){
      $('.show').show(3000,'linear',function(){
        alert('welcome');
      });
    });
    
    2.通过淡入的方式显示匹配元素
    $('.btn').on('click',function(){
      $('.show').fadeIn(3000);
    });
    
    3.用滑动动画显示一个匹配元素,方法将给匹配元素的高度的动画,这会导致页面的下面部分滑下去,弥补了显示的方式
    $(.btn).on('click',funtion(){
      $('.show').sildeDown(3000);
    })
    
  • jQuery隐藏元素
    1.$('.show').hide(1000);
    2.通过淡出的方式隐藏匹配元素
    $('.btn').on('click',funtion(){
      $(.show).fadeOut(3000,'slow');
    });
    
    3.用滑动动画隐藏一个匹配元素,方法将给匹配元素的高度的动画,这会导致页面的下面部分滑上去,当一个隐藏动画后,高度值达到0的时候,display 样式属性被设置为none,以确保该元素不再影响页面布局。 display 样式属性将被设置为none,以确保该元素不再影响页面布局。
    $('.btn').on('click',funtion(){
      $(.show).fadeOut(3000,'slow');
    });
    

题目5: jQuery 动画如何使用?
.animate( properties [, duration ] [, easing ] [, complete ] )
用法:jquery对象.animate(执行动作(一般都是css样式),回调函数(可选));
例子:

<!DOCTYPE html>
<html>
<head>
    <script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
    <meta charset="utf-8">
    <title>JS Bin</title>
    <style>
        #ct {
            border: 1px solid black;
            width: 100px;
            height: 100px;
            background: red;
            position: relative;
        }
    </style>
</head>
<body>
    <div id="ct">animate</div>
    <button type="button">动画</button>
    <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
    <script>
        $('button').on('click', function a() {
            $('#ct').animate({
                left: '300px',
            }, 3000);
            $('#ct').animate({
                top: '300px',
                left: '0'
            }, 'slow');
            $('#ct').animate({
                left: '300'
            }, 'slow');
            $('#ct').animate({
                left: '0',
                top: '0'
            }, 'slow');
        });
    </script>
</body>
</html>

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

  • 获取元素内部HTML内容
    console.log($('.html').html());
    
  • 设置元素内部内容
    $('.html').html('<p>设置内部HTML内容</p>');
    
  • 获取元素内部文本
    console.log($('.text').text());
    
  • 设置元素内部文本
    $(.text).text('设置元素内部文本');
    

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

  • 获取和设置表单用户输入或者选择的内容
    $('input').val();
    $('input').val('newValue');
    当方法没有参数的时候返回input的value值,当传递了一个参数的时候,方法修改input的value值为参数值
  • 获取和设置元素属性
    //获取元素特定属性的值
    var title = $( "em" ).attr( "title" );
    //为元素属性赋值
    $( ".greatphoto" ).attr( "alt", "Beijing Brush Seller" );
    
    $( ".greatphoto" ).attr({
      alt: "Beijing Brush Seller",
      title: "photo by Kelly Clark"
    });
    
    $( ".greatphoto" ).attr( "title", function( i, val ) {
      return val + " - photo by Kelly Clark";
    });
    

代码8
)
代码9
代码10
代码11

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容