DOM
jQuery
DOM相关 基本 在浏览器的开发者界面F12,可以非常清楚的选择一个元素,查看其DOM结构等内容选择 最常用的就是使用document.getElementById()选择id接节点, document.getElementsByTagName() 以及CSS选择器document.getElementsByClassName() 下面两种返回一组节点 为了限定范围,一般先限定id节点1 2 var trs = document .getElementById('test' ).getElementsByTagName('tr' )var trs = document .getElementById('test' ).getElementsByClassName('red' )
修改 选择后就可以进行添加跟修改相关内容1 2 3 4 5 6 7 8 9 10 var p = document .getElementById('pid' );p.innerHTLM = '123' ; p.style.color = '#ff0000' ; haskell = document .createElement('p' ); haskell.id = 'hsk' ; haskell.innerText = 'Haskell' ; list = document .getElementById('list' ); list.appendChild(haskell);
insertBefore(haskell,ref)可以把元素插入ref节点之前删除 1 2 3 4 5 6 7 8 <ul id ="test-list" > <li > JavaScript</li > <li > Swift</li > <li > HTML</li > <li > ANSI C</li > <li > CSS</li > <li > DirectX</li > </ul >
1 2 var testlist = getElementById('test-list' );testlist.removeChild(testlist.children[0 ]);
表单 getElementById也可以获取input,然后可以通过value获取值1 2 3 4 5 var email = document .getElementById('email' );email.value; email.value = 'xxxxx' ; <input type ="text" id ="email" >
promise promise可以很清晰的将几个任务串联起来 job1.then(job2).then(job3).catch(handleError);
jQuery 基本 上面的方法操作DOM有点繁杂 不如用jquery,jQuery好处有很多,轻松操作DOM,实现动画等等,而且使用很简单,直接在head中引用就行。
1 2 3 4 <head > <script src ="//code.jquery.com/jquery-1.11.3.min.js" > </script > ... </head >
jQuery把所有内容封装在$符号中,window.jQuery === window.$
选择 jQuery选择就非常容易
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 var test = $('#abc' ); var test1 = test.get(0 ); var ps = $('p' ); var cs = $('.red' ); var password = $('[type=password]' ); var password = $('[type^=pass]' ); var password = $('[type$=word]' ); var cl = $('[class^="cl"]' ); var einput = $('input[name=email]' ); var trred = $('tr.red' ); var pdiv = $('p,div' ); var redgreen = $('p.red,p.green' ); <!-- HTML结构 --> <div class ="testing" > <ul class ="lang" > <li class ="lang-javascript" > JavaScript</li > <li class ="lang-python" > Python</li > <li class ="lang-lua" > Lua</li > </ul > </div > $('ul.lang li.lang-lua' ); $('ul.lang>li.lang-lua' ); var py = $('.lang-python' ); py.next(); py.prev();
过滤 可以通过filter过滤已经选择的节点中的节点
1 2 var lan = $('ul.lang li' );var lua = lan.filter('.lang-lua' );
操作 text()和html()无参数时获取内容,有参数时进行修改。
1 2 3 4 var py = $('.lang-python' );py.text('123' ); py.html('<span style="color: red">123</span>' ); $('.noex' ).text('1123' );
还可以修改css,修改作用于style,具有最高优先级
1 2 $('ul.lang li.lang-lua>span' ).css('background-color' ,'#ffd351' ).css('color' ,'red' ); $('ul.lang li.lang-lua>span' ).css('background-color' ,'' ).css('color' ,'' );
还可以修改class
1 2 3 4 var div = $('#textdiv' );div.hasClass('highlight' ); div.addClass('highlight' ); div.removeClass('highlight' );
使用show(),hide()进行隐藏,显示
1 2 3 var div = $('#textdiv' );div.hide(); div.show();
还可以直接获取相应的信息
1 2 3 4 5 6 7 8 $(window ).width(); $(document ).width(); $('.textdiv' ).height(); $('.textdiv' ).attr('name' ); $('.textdiv' ).attr('name' ,'hello' ); $('.textdiv' ).removeAttr('name' ); $('.ck' ).is(':checked' ); $('.inp' ).val(); $('.inp' ).val('123' );
append()可以添加新的节点
1 2 3 4 5 6 7 8 9 10 11 <div id="test-div" > <ul > <li > <span > JavaScript</span > </li > <li > <span > Python</span > </li > <li > <span > Swift</span > </li > </ul > </div> var ul = $('#test-div>ul' );ul.append('<li><span>C</span></li>' )
事件 jQuery有很多事件包括鼠标事件click,dblclick……键盘事件keydown,keyuo……其他事件focus,change,submit……ready事件是在DOM完成后触发,仅作用于document,适合用来写其他的初始化代码
1 2 3 4 5 6 7 8 9 $(document ).ready(function ( ) { $('#test_button' ).click(function ( ) { alert('123' ); }); }); $('#test_button' ).off('click' );
有些事件的触发是只能用户才能触发,比如文本框的改动,js改动则不会触发
1 2 3 4 5 $('text-input' ).change(function ( ) { alert('123' ); }); $('text-input' ).change();
动画 jq实现动画很方便,只需要简单的在hide和show里面加入参数,或者使用toggle等进行div的消失与出现
1 2 3 4 5 6 7 8 9 10 11 12 13 var tdiv = $('#test-div' );tdiv.hide(1000 ); tdiv.show('slow' ); tdiv.toggle('slow' ); tdiv.slideUp('slow' ); tdiv.sildeDown('slow' ); tdiv.slideToggle('slow' ); tdiv.fadeOut('slow' ); tdiv.fadeIn('slow' ); tdiv.fadeToggle('slow' );
jq也可以自定义动画,只需要指定最终样式,jq就能实现转变的动画效果
1 2 3 4 5 6 7 8 9 10 11 tdiv.animate({ width :'200px' , height :'200px' , },1000 ); tdiv.animate({ width :'200px' , height :'200px' , },1000 ,function ( ) { $(this ).css('height' ,'100px' ).css('width' ,'100px' ); });
动画效果可以串行
1 2 3 4 5 6 tdiv.slideDown(1000 ) .delay(1000 ) .animate({ width :'200px' , height :'200px' , },1000 );
AJAX ajax异步 JavaScript 和 XML(Asynchronous JavaScript and XML),可以用来获取信息,包括非本地的信息。
1 2 3 4 5 6 7 8 9 10 $('#test-div' ).load(url,data,callback); <div id ="div1" > <h2 > 使用 jQuery AJAX</h2 > </div > <button > 获取外部内容</button > $(document ).ready(function ( ) { $('button' ).click(function ( ) { $('#div1' ).load("/xxxx.txt #p1" ); }); });
get()和post() get通过http get获得数据 post则使用post
1 2 $.get(url,callback); $.post(url,data,callback);
编写插件 通过$.fn对象来实现,之后就可以直接使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 $.fn.highlightS = function ( ) { this .css('backgroundColor' ,'#fffceb' ).css('color' ,'#d85030' ); return this ; } $('#test-div' ).highlightS(); $.fn.highlightUser = function (options ) { var bgcolor = options && options.backgroundColor || '#fffceb' ; var cor = options && options.color || '#d85030' ; this .css('backgroundColor' , bgcolor).css('color' , cor); } $('#test-div' ).highlightUser({ backgroundColor : '#00a8e6' , color : '#ffffff' }); $.fn.highlightFinal = function (options ) { var opts = $.extend({}, $.fn.highlightFinal.defaults, options); this .css('backgroundColor' , opts.backgroundColor).css('color' , opts.color); return this ; } $.fn.highlightFinal.defaults = { color : '#d85030' , backgroundColor : '#fff8de' }