jQuery基础 浅析(含基本方法和选择器)

1.jQueryDOM互相转换

jQuery入库函数:$(document).ready(function(){})

                $(function(){})

$(“#btn”):jQuery存储的是DOM对象,相当于数组可以通过[ ]取出具有相同标记的DOM对象

jQuery对象转换为DOM对象:$(“#btn”)[0]  或者  $(“#btn”).get(0),0表示索引号

var btn=document.getElementById(“btn”);
DOM对象转换为jQuery对象:$(btn)

2.jQuery选择器

① 基本选择器

(1) 标签选择器

$(“li”).css(“background”,”pink”);

(2) Id选择器

$(“#id”).css(“fontSize”,”30px”);

(3) 类选择器

$(“.class”).css(“background”,”pink”);

(4)交集选择器

$(“li.class”).css(“background”,”pink”);给具有class类的li标签设置背景色

(5) 并集选择器

$(“li,div”).css(“background”,”pink”);同时给li和div标签设置背景色

② 层级选择器

(1)子代选择器

$(“#ulitem>li”). css(“background”,”pink”);选择指定父元素下面的指定子元素
$(“#ulitem>.class”). css(“background”,”pink”);

$(“.wrap>ul>li”). css(“background”,”pink”); 

(2) 后代选择器

find(“li”)

$(“#Id(空格)li”). css(“background”,”pink”);选择指定祖先元素下面的后代元素包括子元素的子元素,都会被选上。可以跳级选择#Id>ul>li,可以选择到li

(3)过滤选择器

$(“li:odd”). css(“background”,”pink”);所有选择到的元素,索引号奇数选择器

$(“li:even”). css(“background”,”pink”); 所有选择到的元素,索引号偶数选择器

$(“li:eq(4)”). css(“fontSize”,”30px”); 所有选择到的元素,索引号相等选择器

$(“.class > li”).eq(4). css(“fontSize”,”30px”); 索引号相等选择器,第二种方法

$("#Id>li:eq(“+ index +”)”).show();index为动态改变索引号

3.jQuery操作演示

① 样式属性设置

(1) 同时设置多个样式

$(“li”).css(

{“background”:”pink” , ”fontSize”:”30px” , “color”:”green”}

);    传入一个对象

或者

var cssStys = {“background”:”pink” , ”fontSize”:”30px” , “color”:”green”}

$(“li”).(cssStys);

(2) 类名操作

a ) $(“div”).addClass(“box”)

添加两个类名xxx.className = xxx.className + “box”;

$(“div”).addClass(“xxx.className”)

b ) $(“li”).removeClass(“box”) , 如果不传入参数,会移除所有类名

② 动态创建元素

var aLink = $(‘<a href=”http://web.baidu.com”>百度</a>’);

$(“div”).append(aLink);

或者  $(“div”).append(‘<a href=”http://web.baidu.com”>百度</a>’);

append(#Id);如果追加的是已经有的元素,会从元素原来的位置移除元素追加到当前需要追加元素的位置

$(“div”).html(‘<a href=”http://web.baidu.com”>百度</a>’);清空原有元素,创建当前元素/内容

③ 获取宽高

var height = $(#Id).css(“height”); height为string类型,值为如:200px

计算宽高:parseInt(height);

或者$(#Id).height();直接获取数值类型高度

4 jQuery的事件对象

$(“div”).on(“click” , “input” , function( event ){

     event.delegateTarget 表示:代理绑定事件的元素 ----->div

     event.currentTarget  表示:绑定事件的元素     ----->input

     event.target        表示:触发事件的元素,点击谁---->谁                                         

})

event.data                                     传递给事件处理程序的额外数据

event.currentTarget                        等同于this

event.pageX                                  鼠标相对于页面左边的位置

event.target                                   触发事件源,不一定===this

event.stopPropagation();               阻止事件冒泡

event.preventDefault();             阻止默认行为

event.type                                      事件类型:click,dbclick…

event.which                                    鼠标的按键类型:左1 中2 右3

event.keyCode                                键盘按键代码

return false; // 同时具有阻止冒泡和阻止默认行为的功能

this:哪个元素触发的事件,this就指向这个元素。

5 隐式迭代

设置操作

$(“div”).css(“color” , “red”);

给所有的div设置背景色为红色,自动进行循环遍历设置,不用再添加循环。

$(“div”).css(“color”);

获取属性时,只返回第一个div元素的背景色,相当于索引为[0],如果第一个元素没有这个属性,返回undefined

6链式编程

$(#Id).children(“ul”).children(“li”).css(“opacity”,0.5);

$(#Id).parent(“li”).siblings(“li”).children(“div”).css(“opacity”,0.5);

实现原理:通过构造函数创建对象,同时return this;

构造函数:function person (){

        this.name = “Tom”;

        this.age = 18;

        this.sayHello = function(){

        console.log(this.name);

        return this;}

        this.addAge = function(){

        this.age++;

        console.log(this.age)

        return this;}

      }

创建对象: var person = new person( );

调用person.sayHello().addAge();实现链式编程

end():结束当前链最近的一次过滤操作,恢复链式编程被修改之前的一个状态

$(“div > ul”).text().prevAll(“li”).text().end()   此时返回的this为”ul”

7.jQuery 基本方法

parent():父元素选择

children():子元素选择

mouseenter():鼠标进入

parents():祖先元素选择

next():获取紧挨下一个元素 

mouseleave():鼠标离开

css(“fontSize”):获取样式

siblings():获取兄弟元素  

css(“attr”,value):改变style

find(“li”):选择指定后代元素 注释:find()括号中必须传入元素

focus():获取焦点

blur():失去焦点

dbclick():双击事件

change():改变事件

keydown():键盘按下事件

click():单击事件

addClass(“class”):添加类名

removeClass():移除类名 

hasClass():判断是否有类名

toggleClass()[1]:判断是否有类名,有就移除没有就添加

fadeIn():淡入动画  

index():获取元素索引号

show(num): 展示动画

slideDown():划入动画效果

fadeout():淡出动画

hide(num):隐藏动画

slideUp():划出动画效果 

fadeTo(200,0.5):淡到动画

fadeToggle():似toggleClass()

slideToggle():似toggleClass()

animate():自定义动画

stop():停止动画

append():在后面追加元素

empty():清空元素 

html(“”):清空元素

element.appendTo(node): element元素往node元素中添加

prepend():向前添加元素

remove():移除元素

clone():复制元素,返回一个jQuery对象

after():在当前元素后面添加

before():在当前元素前添加

attr():获取、设置属性

html():获取html

text():获取纯文本内容

val():获取文本值

stopPropagation():阻止冒泡

preventDefault():阻止默认行为  

height():获取高度,数值型 

width():获取宽度,数值型

scrollTop():被卷去头部

scrollLeft():被卷去左部

   

prop():设置属性,主要应用设置checked,selected,disabled,等动态改变的属性,用法与attr()相同

offset({top:100,left:100}):获取、设置相对页面左上角位置,获取设置结果为对象如{top:100,left:100} 

如果元素有定位,不设置定位,如果没有定位,会被设置position:relative

bind({“click mouseenter”,function(){}})[2]:可同时绑定多个事件,不能给动态创建元素绑定事件

$(“ul”).delegate(“li” , ”click” , function() {alert(“事件绑定”)}): 给动态创建元素绑定事件,机理:给父元素绑定事件,子元素可以触发事件,事件冒泡机制。

on()[3]:即可给原本存在元素绑定事件,也可给动态创建元素绑定事件,zepto手机端通用

unbind():解除bind()绑定事件,不常用

undelegate():解除delegate()绑定事件,不常用

off(“click”):解除绑定事件,全部都解除

off(“click” , “**”):解除动态绑定事件,自身绑定事件还存在

trigger(“focus”):触发事件,即触发已经绑定的事件,会触发浏览器的默认行为

triggerHander(“focus”):触发事件,即触发已经绑定的事件,不会触发浏览器的默认行为

prevAll():获取指定元素之前的所有元素

 nextAll():获取指定元素之后的所有元素

end():结束当前链最近的一次过滤操作,恢复链式编程被修改之前的一个状态

each(function(index,ele){})[4]:循环设置每个元素,包含index,ele两个参数

8.jQuery属性

① length属性解析

.length :获取匹配元素的个数,不是方法是jQuery属性

$(#Id).find(“:checkbox”).length,表示所有type = checkbox的input的个数

② jQuery多库共存

$.noConflict(): 让jQuery释放对$的控制,$.noConflict():需要放到最上部

释放$后调用jQuery------

 jQuery(function(){

  jQuery(“btn”).click(function(){

    alert(123)

  })

})

或者var j = $.noConflict(); 之后使用j  j(function(){   })

③  jQuery插件制作

$.fn.changeBg = function(){  }

changeBg为函数名,$.fn.changeBg 为固定写法

9.jQuery方法可行特性分析

① 鼠标触碰排他事件:

$(“.class > li”).mouseenter(function(){

    $(this).addClass(“className”).siblings(“li”).removeClass(“className”)

})

② show()动画效果

Show(400) = show(“normal”)   Show(200) = show(“fast”)

Show(600) = show(“slow”)

Show (2000 , function () {

  alert(“动画执行完后,立即执行的回调函数”);

})

③ animate()自定义动画实现只能改变单一数值属性 font,backgruond等效果无法实现

$(“btn”).click(function(){

$(“div”).animate(

  {“width”:”200px” , “height”:”200px” , “opacity”:0.4} , 2000 , function(){

    alert(“执行自定义动画”)

  })

})

④ 通过选择器获取对象

$(#Id).find(“:checkbox”).length    $(#Id).find(“:checkbox: checked”).length

$(#Id).find(“:checked”).length

⑤ 键盘按下事件on(“keydown”)

$(document).on(“keydown” , function(event){

    var keyCode = event.keyCode;

    $(“#Id”).text(keyCode);

    switch(keyCode){

      case  82:

          $(“#Id”).css(“background” , ”red”);

          Break;

      case  71:

      $(“#Id”).css(“background” , ”green”);

      Break;

    }

})

注释:

[1]  toggleClass(“div”)实现原理:

if($(“div”).hasClass(“box”)) {

    $(“div”).removeClass(“box”);

    }  else  {

    $(“div”).addClass(“box”);

}

[2]  bind({ })实现:

①$(#Id).bind ( {

    “click” : function(){ alert(“被点击了”) },

    “mouseenter” : function(){“鼠标进入了”}

 })

②$(#Id).bind (

    “click mouseenter”,function(){

    i++;

    alert( i );

   })   alert(1) , alert(2)

[3] 给原本存在元素绑定事件:

$(#Id).on(

    “click mouseenter”,function(){

    i++;

    alert( i );}))

给动态创建元素绑定事件:

$(“ul”).on( “click” , ”li” , function(){alert(“事件绑定”) } )

[4] each()方法使用,例:给10给li设置透明度

   $(“li”).each(function(index,ele){  

    index表示当前元素的索引号

     ele表示当前元素

         var p = (index + 1)/10;

         $(ele).css(“opacity” , p)

  })  

posted @ 2017-03-04 00:52  Tabb.Coding  阅读(441)  评论(0编辑  收藏  举报