jQuery基本操作笔记

*jqjs

可以共存,不能混用;                                                                                                                                                            

方法函数化:

jquery中的this的写法是   $(this)  html()  因为方法函数法的思想的存在() 是不能省去的,运行函数;这jquery中很常见;

jsjquery的关系

可以互存,不能混用;

 

$()下的常用方法

hasfilter的区别

has包含的意思,选择的是元素里面的东西;

filter针对的元素自身的选择;

 

nextprev

next选择下一个兄弟节点

prex选择上一个兄弟节点

find    查找当前元素下所有的后代元素

eq()    一组中的第几个;

index()  一组元素的索引;通过一组索引,来控制另外一个索

 

 
 

选项卡:

原生jsjquery

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
window.onload = function (){
     var oDiv = document.getElementById( 'div1' );
     var aInput = oDiv.getElementsByTagName( 'input' );
     var aCon = oDiv.getElementsByTagName( 'div' );
     for ( var i=0;i<aInput.length;i++){
         aInput[i].index = i;
         aInput[i].onclick = function (){
             for ( var i=0;i<aInput.length;i++){
                 aInput[i].className = '' ;
                 aCon[i].style.display = 'none' ;
             }
             this .className = 'active' ;
             aCon[ this .index].style.display = 'block' ;
         };
     }
};

$(function(){

    $('#div1').find('input').click(function(){

        $('#div1').find('input').attr('class','');

        $('#div1').find('div').css('display','none');

        $(this).attr('class','active');

        $('#div1').find('div').eq( $(this).index() ).css('display','block');

    });

});

?
1
2
3
4
5
6
7
8
9
10
<body>
<div id= "div1" >
     <input class = "active" type= "button" value= "1" />
     <input type= "button" value= "2" />
     <input type= "button" value= "3" />
     <div style= "display:block" >111111</div>
     <div>222222</div>
     <div>333333</div>
</div>
</body>

这里的jquery是根据js的思路来编写的;

也可以用其他的思路来做这个选项卡,用到siblings()等;

addClassremoveClass

?
1
2
3
4
$( function (){
     $( 'div' ).addClass( 'box2 box4' );
     $( 'div' ).removeClass( 'box1' );
});

width()   innerWidth()   outerWidth()  获取元素的宽和区别

?
1
2
3
4
5
6
$( function (){
     alert( $( 'div' ).width() );  //width
     alert( $( 'div' ).innerWidth() );  //width + padding
     alert( $( 'div' ).outerWidth() );  //width + padding + border
     alert( $( 'div' ).outerWidth( true ) );  //width + padding + border + margin
});

insertBefore()  insertAfter()  

注意:insertBefore是剪切的功能,不是复制的功能;

?
1
2
3
4
5
6
7
8
9
$( function (){
     //$('span').insertBefore( $('div') );  //将span调整到div的前面,jq中的insertBefore和js中的insertBefore是一样的;具备剪切的功能,而不是复制的功能;
     //$('div').insertAfter( $('span') );  //将div放在span的后面;
     //$('div').appendTo( $('span') );   //和js中的appendChildren是一样的;作用是把一个节点添加到指定节点最后的位置;
     //$('div').prependTo( $('span') );  //原生js中没有,作用是把一个节点添加到指定节点最开始的位置;  
     //insertBefore和before的区别 :后续操作变了;主要是我们写链式操作会有影响;
     //$('span').insertBefore( $('div') ).css('background','red');
     $( 'div' ).before( $( 'span' ) ).css( 'background' , 'red' );
});

remove()  删除节点

?
1
2
3
$( function (){
     $( 'div' ).remove();
});

on()  off()   事件的写法:

off取消事件;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$( function (){
     /*$('div').click(function(){
         alert(123);
     });*/
     /*$('div').on('click',function(){   //支持多个事件,支持系统事件和自定义事件
         alert(123);   
     });*/
     /*$('div').on('click mouseover',function(){   //多个事件,中间用空格
         alert(123);
     });*/
     /*$('div').on({
         'click' : function(){   //中间用冒号
             alert(123);
         },
         'mouseover' : function(){
             alert(456);
         }
     });*/   //点击弹出123.移入弹出456  说明on还是很灵活的
     $( 'div' ).on( 'click mouseover' , function (){
         alert(123);
         $( 'div' ).off( 'mouseover' );  //执行后,mouseover事件会被关闭
     });  
});

scrollTop()   获取和设置滚动距离

?
1
2
3
4
5
$( function (){
     $(document).click( function (){
         alert( $(window).scrollTop() );  //获取滚动距离
     });
});

编写弹窗效果:

首先,在DOM中创建元素是非常容易的事情;

?
1
2
var oDiv = $( '<div>div</div>' );  //创建div元素和内容
$( 'body' ).append( oDiv );

弹窗效果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$( function (){
     $( '#input1' ).click( function (){
         //动态创建元素和内容
         var oLogin = $( '<div id="login"><p>用户名:<input type="text" /></p><p>密码:<input type="text" /></p><div id="close">X</div></div>' );  //中间不能有空格
         $( 'body' ).append( oLogin );  //插入元素
         //让弹窗居中
         oLogin.css( 'left' , ($(window).width() - oLogin.outerWidth())/2 );   //设置left值
         oLogin.css( 'top' , ($(window).height() - oLogin.outerHeight())/2 );  //设置top值
         $( '#close' ).click( function (){
             oLogin.remove();   //移除节点
         });
         //在调整窗口大小事件和滚动事件,调整弹出窗的位置;
         $(window).on( 'resize scroll' , function (){  //在调整窗口大小事件和滚动事件
             oLogin.css( 'left' , ($(window).width() - oLogin.outerWidth())/2 );
         oLogin.css( 'top' , ($(window).height() - oLogin.outerHeight())/2 + $(window).scrollTop() );  //top值要注意加上滚动距离
         });
     });
});

ev  pageX  which 

preventDefault  stopPropagation

one()

?
1
2
3
4
5
6
7
8
9
10
11
12
13
$( function (){
     /*$('div').click(function(ev){
         //ev : jq中直接使用,是兼容后的event对象
         //ev.pageX(鼠标坐标-->相对于文档的)    js中是使用clientX(相对于可视区域的)
         //ev.which : js中的keyCode
         ev.preventDefault();  //阻止默认事件
         ev.stopPropagation();  //阻止冒泡的操作
         return false;   //阻止默认事件 + 阻止冒泡的操作
     });*/
     $( 'div' ).one( 'click' , function (){  //one-->只执行事件一次
         alert(123);
     });
});

offset()  position()

?
1
2
3
4
5
$( function (){
     //div2.offsetLeft
     //alert( $('#div2').offset().left );  //获取到屏幕的左距离  offset().left  offset.top()
     alert( $( '#div2' ).position().left );  //到有定位的父级的left值,把当前元素转化成类似定位的形式,注意是不算margin的
});

parent() offsetParent()   获取有定位的父级

parent() : 获取父级,不管父级是否有定位; 注意这里没有加s,不是parentsjq中还有parents()方法,见下

offsetParent() : 获取有定位的父级

?
1
2
3
4
5
6
$( function (){
     //parent() : 获取父级
     //offsetParent() : 获取有定位的父级
     //$('#div2').parent().css('background','blue');
     $( '#div2' ).offsetParent().css( 'background' , 'blue' );
});

val()  获取元素的value值;

size() 获取一组元素的长度;像length

each() jq中的循环;原生for循环的加强版

?
1
2
3
4
5
6
7
8
$( function (){
     //alert( $('input').val() ); 获取value值
     //$('input').val(456);  赋值value值
     alert( $( 'li' ).size() );  //4 获取一组元素的长度;像length
     $( 'li' ).each( function (i,elem){   //一参:下标 二参 : 每个元素
         $(elem).html(i);
     });
});

拖拽jquery实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$( function (){
     var disX = 0;
     var disY = 0;
     $( 'div' ).mousedown( function (ev){
         disX = ev.pageX - $( this ).offset().left;   //存储距离
         disY = ev.pageY - $( this ).offset().top;
         $(document).mousemove( function (ev){
             $( 'div' ).css( 'left' ,ev.pageX - disX);
             $( 'div' ).css( 'top' ,ev.pageY - disY);
         });
         $(document).mouseup( function (){
             $(document).off();  //鼠标弹起的时候取消事件
         });
         return false //阻止默认事件和冒泡
     });
});

hover()      模拟css中的hover,鼠标移入移除;

hover         鼠标移入和鼠标移除结合的方法

hover(function(){},function(){})

 

Show() hide()            接受一个参数- ->  时间(ms               长,宽,透明度都要变化

fadeIn()   fadeOut()    淡出效果和淡出效果  改变透明度

fadeTo()    指定到一个范围,有两个参数,第一个是时间,第二个是透明度值

?
1
$( '#div2' ).fadeTo(1000,0.5);

slideDown()   slideUp()         向下展开,向上卷起;

 

get()方法

?
1
2
3
4
5
6
7
8
9
10
11
$( function (){
     //document.getElementById('div1').innerHTML
     //alert( $('#div1').get(0).innerHTML );  get需要标注下标;将jquery转成原生js
     /*for(var i=0;i<$('li').get().length;i++){  //这里通过get()转成js,这里的length相对于js的
         $('li').get(i).style.background = 'red';
     }*/
     for ( var i=0;i<$( 'li' ).length;i++){  //这里的length是JQ中的属性,也是使用正确的;
         $( 'li' ).get(i).style.background = 'red' ;
         //$('li')[i].style.background = 'red';  得到元素后,后面加一个中括号,写成下标的形式,也就自动转成原生js的形式了;这是一种偷巧的写法;
     }
});

outerWidth与原生的区别:

?
1
2
3
4
$( function (){
     //alert( $('#div1').get(0).offsetWidth );  //这里原生js,如果把div1设置为隐藏,获取的值为0;
     alert( $( '#div1' ).outerWidth() );  //不管是显示和隐藏的,都可以获取到值;
});

text()    会获取所有的内容(特例),不会获取到标签,而html会获取到标签;

?
1
2
3
4
5
$( function (){
     //alert( $('div').html() );
     //alert( $('div').text() );  //会获取所有的内容(特例)
     $( 'div' ).text( '<h3>h3</h3>' );  //在浏览器中会输出纯文本<h3>h3</h3>
});

remove()detach()的区别:

//remove方法删除元素的时候会把元素的操作行为也删除掉;

//detach() : 跟remove方法一样,只不过会保留删除这个元素的操作行为

?
1
2
3
4
5
6
7
$( function (){
     $( 'div' ).click( function (){
         alert(123);
     });
     var oDiv = $( 'div' ).detach();  //这里如果用remove(),恢复的时候,点击行为会无效
     $( 'body' ).append( oDiv );
});

$()   :  $(document).ready()  window.οnlοad=function(){}的区别:

?
1
2
3
4
5
6
$( function (){  //等DOM加载完就可以执行了 , 性能要好
});
$(document).ready( function (){
});
的简写;

 window.onload = function(){}; //等图片和flash等加载完才执行;

//DOMContentLoaded

parents()   closest()

//parents() : 获取当前元素的所有祖先节点,参数就是筛选功能

//closest() : 获取最近的指定的祖先节点(包括当前元素自身),必须要写筛选的参数,只能找到一个元素

?
1
2
3
4
5
$( function (){
     //$('#div2').parents().css('background','red');  //获取到所有祖先节点 div1,body,html
     //$('#div2').parents('.box').css('background','red');  //获取到class为box的祖先元素
     $( '#div2' ).closest( '.box' ).css( 'background' , 'red' );
});

siblings() 获取元素的所有兄弟节点 ;

nextAll() 获取下面所有的兄弟节点;

preAll() 获取上面所有的兄弟节点;

parentsUntil()   nextUntil()   prevUntil()

//siblings() : 找所有的兄弟节点,参数也是筛选功能

//nextAll() : 下面所有的兄弟节点,参数也是筛选功能

//prevAll() : 上面所有的兄弟节点

//Until() : 截止

?
1
2
3
$( function (){
     $( 'span' ).nextUntil( 'h2' ).css( 'background' , 'red' );
});

clone()  克隆节点:

?
1
2
3
4
5
6
7
8
9
$( function (){
     //$('div').appendTo( $('span') );   //剪切行为
     //$('span').get(0).appendChild( $('div').get(0) );
     //clone() : 可以接收一个参数 ,作用可以复制之前的操作行为
     $( 'div' ).click( function (){
         alert(123);
     });
     $( 'div' ).clone( true ).appendTo( $( 'span' ) ); //参数true作用可以复制之前的操作行为
});

wrap()  wrapAll()  wrapInner()  unwrap()   包装,包装方法

在外面包裹一下

$('span').wrapInner('<div>'); //span外包装div

 wrapAll() 整体包装:

//wrap() : 包装

//wrapAll() : 整体包装; 会影响结构

//wrapInner() : 内部包装;

//unwrap() : 删除包装 ( 删除父级 : 不能删除body )

?
1
2
3
4
$( function (){
     //$('span').wrapInner('<div>');   div在span里面了
     $( 'span' ).unwrap();
});

add()

?
1
2
3
4
5
6
7
$( function (){
     /*var elem = $('div');
     var elem2 = elem.add('span');
     elem.css('color','red');
     elem2.css('background','yellow');*/
     $( 'li' ).slice(1,4).css( 'background' , 'red' );
});

slice()

$('li').slice(1,4).css('background','red');

第一个参数是起始位置,4是结束位置(选中的不包括结束位置);

serialize()    serializeArray()   数据串连化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$( function (){
     //console.log($('form').serialize());  //string : a=1&b=2&c=3
     console.log( $( 'form' ).serializeArray() );
     [
         { name : 'a' , value : '1' },
         { name : 'b' , value : '2' },
         { name : 'c' , value : '3' }
     ]
});
</script>
</head>
<body>
<form>
     <input type= "text" name= "a" value= "1" >
     <input type= "text" name= "b" value= "2" >
     <input type= "text" name= "c" value= "3" >
</form>

jquery中的animate()

//animate() : 

//第一个参数 : {} 运动的值和属性

//第二个参数 : 时间(运动快慢的)  默认 : 400 毫秒

//第三个参数 : 运动形式 只有两种运动形式 ( 默认 : swing(缓冲,慢快慢) linear(匀速) ) 默认是缓冲(慢快慢)

//第四个参数 :  回调函数;运行结束后,回调函数

?
1
2
3
4
5
6
7
8
$( function (){
     $( '#div1' ).click( function (){
         $( this ).animate({width : 300 , height : 300} , 3000 , 'linear' , function (){
             alert(123);   //回调函数,也可以用链式操作来写;
         });
         $( '#div2' ).animate({width : 300 , height : 300} , 3000 , 'swing' );
     });
});

链式操作来写:先宽后高;和上述的回调函数效果一致;

?
1
$( this ).animate({width : 300} , 2000).animate({height : 300} , 2000);

Stop()方法:

?
1
2
3
4
5
6
7
$( '#div2' ).click( function (){
         //$('#div1').stop();   //默认 : 只会阻止当前运动(当前步骤)
         //$('#div1').stop(true); //阻止所有后续的运动
         //$('#div1').stop(true,true); //立即停止到当前步骤指定的目标点,当前步骤的目标点
         // stop不能做到,点一下-->直接到最后的目标点-->用finish()
         $( '#div1' ).finish();  //立即停止到所有指定的目标点,到最后的目标点
     });

delay()

延迟

jquery中事件委托:

delegate()   undelegate()

?
1
2
3
4
5
6
7
8
9
$( function (){
     /*$('li').on('click',function(){
         this.style.background = 'red';
     });*/
     $( 'ul' ).delegate( 'li' , 'click' , function (){   //事件委托
         this .style.background = 'red' ;
         $( 'ul' ).undelegate();  //阻止事件委托
     });
});

trigger()  主动触发

?
1
2
3
4
5
6
7
8
9
10
11
12
13
$( function (){
     /*$('#div1').on('click',function(){
         alert(123);
     });
     $('#div1').trigger('click');  //主动触发*/
     $( '#div1' ).on( 'show' , function (){
         alert(123);
     });
     $( '#div1' ).on( 'show' , function (){
         alert(456);
     });
     $( '#div1' ).trigger( 'show' );
});

事件细节:

?
1
2
3
4
5
6
7
$( function (){
     $( '#div1' ).on( 'click' ,{name: 'hello' }, function (ev){
         //alert(ev.data.name);    这里的ev.data等于{name:'hello'}这个整体,ev.data.name就是hello
         //alert( ev.target );  当前操作的事件源,全兼容的
         alert( ev.type );   当前操作事件类型
     });
});

jquery的工具方法:

我们前面的都是$().css()  $().html()  $().val()  : 只能给JQ对象用;

 

而实际上,我们还存在另外一种写法:   不仅可以给jquery用,也可以给原生js用;

$.xxx()  $.yyy()  $.zzz()  : 不仅可以给JQ用,也可以给原生JS : 叫做工具方法

type()

trim()

?
1
2
3
4
5
6
7
8
$( function (){
     //var a = null;
     //$.type() : 也是判断类型,功能更加强大,能判断出更多的类型
     //alert( typeof a ); 原生js的判断变量类型
     //alert( $.type(a) ); 用$.type()判断出更多类型,功能更强大
     var str = '    hello    ' ;
     alert( '(' +$.trim(str)+ ')' );  //$.trim()去除前后的空格
});

inArray()   类似于 indexOf

proxy()  改变this指向

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$( function (){
     //var arr = ['a','b','c','d'];
     //alert( $.inArray('b',arr)  ); //b在array这个数组中的位置;若没有会返回-1;有的话就返回位置
     //proxy()  : 改变this指向的
     function show(n1,n2){
         alert(n1);
         alert(n2);
         alert( this );
     }
     //show();
     //$.proxy(show , document)(); //show的this指向document
     //$.proxy(show , document,3,4)();  //对于传参,传参可以这样传
     $.proxy(show , document,3)(4);  //也可以这样混着传参
 
     //jquery中为什么要这样传参呢?
     //$(document).click( $.proxy(show,window)(3,4)  ); //如果这样传参,刷新就直接调用函数
     $(document).click( $.proxy(show,window,3,4)  );  //这样传参,就是在click后才会调用函数,而不会直接调用; 
 
});

$.noConflict()  防止冲突

//$ , jQuery  $=jQuery 一回事 $不是jQuery独有的

?
1
2
3
4
5
6
//noConflict() : 防止冲突的
var aaa= $.noConflict();
var $ = 10;
aaa( function (){
     aaa( 'body' ).css( 'background' , 'red' );
});

parseJSON()  把字符串转换成json类型

?
1
2
var str = '{"name":"hello"}' //字符串必须是严格的JSON格式
alert($.parseJSON( str ).name);  //把字符串转换成json

makeArray() 

?
1
2
3
4
window.onload = function (){
     var aDiv = document.getElementsByTagName( 'div' );  //只是集合,不是真正的数组,我们叫做类数组(类似于数组)
     $.makeArray(aDiv).push();  //通过 $.makeArray(aDiv) 把 类数组 转换成 真正的数组
};

jquery中使用ajax

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>
/*$.ajax({
     url : 'xxx.php',
     data : 'name=hello&age=20',
     type : 'POST',   //默认是get
     success : function(data){  //请求成功以后的回调函数
         alert(1);
     },
     error : function(){   //请求失败之后
         alert(2);
     }
});*/
$.get( 'xxx.php' , function (){    //ajax的get请求可用get(),第一个是地址,第二个是成功后回调
});
// $.get()和$().get()是有区别的;前者是ajax的get请求方法,后者是将jQuery对象转换成js原生对象
$.post( 'xxx.php' , function (){
});
$.getJSON( 'xxx.php?callback=?' , function (data){  //请求json类型的数据,支持jsonp的形式:指定?callback=?
     data
});
随机({});
</script>

jQuery中的插件

扩展插件

//$.extend : 扩展工具方法下的插件形式  $.xxx() $.yyy()

//$.fn.extend  :  扩展到JQ对象下的插件形式  $().xxx()  $().yyy()

用插件实现去掉左空格

?
1
2
3
4
5
6
7
$.extend({
     leftTrim : function (str){
         return str.replace(/^\s+/, '' ); //这里用正则来去掉左空格
     }
});
var str = '  hello  ' ;
alert( '(' +$.leftTrim(str)+ ')' );  //利用leftTrim去掉左空格
?
1
2
3
4
5
6
7
8
9
$.extend({    //用extend,json的写法,可以扩展多个
     leftTrim : function (str){
         return str.replace(/^\s+/, '' ); //这里用正则来去掉左空格
     },
     rightTrim : function (){},
     aaa : function (){
         alert(1);
     }
});

$.fn.extend({  //也是写成json形式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
drag : function (){   //这里扩展拖拽
         //this : $('#div1')
         var disX = 0;
         var disY = 0;
         var This = this //这里将this存入变量This中;
         this .mousedown( function (ev){
             disX = ev.pageX - $( this ).offset().left;
             disY = ev.pageY - $( this ).offset().top;
             $(document).mousemove( function (ev){
                 This.css( 'left' , ev.pageX - disX);
                 This.css( 'top' , ev.pageY - disY);
             });
             $(document).mouseup( function (){
                 $( this ).off();
             });
             return false ;
         });   
     },
     aaa : function (){
         alert(2);
     }
});
?
1
2
3
4
5
6
7
8
9
//$.trim()
//$.leftTrim()
/*var str = '  hello  ';
alert( '('+$.leftTrim(str)+')' );*/
$( function (){
     $( '#div1' ).drag();  //这里调用上面插件的扩展
});
$.aaa();  // 1
$().aaa();  //2

转载于:https://www.cnblogs.com/SmileSunday/p/9318920.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值