Skip to the content.

jQuery


开始工作

$(callback)和window.onload的区别

前者是所有的元素加载完后触发回调,后者是标签和资源全部加载完

$(document).function(){}和$().function(){}一样

原生的js元素不能直接使用jq方法,需要转为jq对象 jq也不能直接使用原生的方法,需转为原生的

let inputs = document.getElementsByTagName('input')
//直接通过$()就可以转为jq对象
$(inputs).click(function(){
    $(this).addClass('red')
})
 $('input').click(function(){
    // 此处的this指的是原生的this,要用jq的方法,就要转为jq对象
    $(this).addClass('red')
    // this.classList.add('red')
})
let jqBox = $('div')
//通过jq对象[下标]的形式可以获取到原生DOM
console.log(jqBox[0])
console.log(jqBox.get(0))

jq实现选项卡切换

$(function(){
    $('input').click(function(){
        $('input').removeClass('red')
        $(this).addClass('red')

        let n = $('input').index(this)
        $('div').hide()
        $('div').eq(n).show()
    })
})

jq添加类似addEventListener事件

第一个参数是事件名 第二个参数是指定选择器可以冒泡到事件元素,例子中只有document下class=active的元素和该元素下的子孙元素可以冒泡到document 第三个参数是传递的参数 第四个参数是事件函数

$(document).on('click mouseenter','.active',{a:100},function(ev){
    console.log(22)
    if(ev.type === 'click'){
        console.log('click')

    }else if(ev.type === 'mouseenter'){
        console.log('mouseenter')
    }
})

效果

animate–自定义动画

语法:$(selector).animate({params},speed,callback);

parans:是一个包含多个属性+属性值的对象,–必需的参数 speed:定义效果的时长,可选参数:slow/fast/毫秒 callback:动画执行完后需要执行的函数名称

属性操作:属性对象几乎可以操作任意css属性,但是除了颜色的改变
  1. 操作多个属性 parans对象:可以是多个属性,如:

     {
         width:'100px',
         height:'200px',
         opacity:'0.2'
     }
    
  2. 属性值使用相对值 parans对象中的属性值除了可以是固定值外,还可以使用类似+=,-=这样的相对值,如:

      {
         width:'+=100px',
         height:'-=200px',
         opacity:'0.2'
     }
    
  3. 属性值使用预定义的值 parans对象中的属性值除了以上两种形式,还可以使用toggle,show,hide这样的预定义值,如:

     $('button').click(function(){
         $('div').animate({
             width:'toggle'//这样的设置会让width在有和无之间切换
         })
     })
    
  4. 动画队列的实现 通过多个animate并列在一起,就可以实现动画的按序播放,第一个运动完成后,紧接着运动第二个动画,依次进行。如:

     $("button").click(function(){
        
         var div=$("div");
         div.animate({height:'300px',opacity:'0.4'},"slow");
         div.animate({width:'300px',opacity:'0.8'},"slow");
         div.animate({height:'100px',opacity:'0.4'},"slow");
         div.animate({width:'100px',opacity:'0.8'},"slow");
            
     });
    

    stop()–停止效果

    定义:是用来动画或效果完成之前,停止它们。并不仅仅是用来停止动画的,还可以停止效果 语法:(selector).stop(stopAll,goToEnd);

stopAll:规定是否清除动画队列,默认为false,意思就是不清除后面的动画,如第一个例子,点击一次停止后,只是清除了第一个height的动画,后面的动画队列依旧会运行。为true的话,则是清除所有动画队列。

goToEnd:是否立即完成当前动画,默认为false,即会清除当前动画,并不会运行完当前动画,为true的话,则是把当前动画运行完,注意只是运行完当前动画,如果第一个参数设为false,后面的动画还是会执行。

  1. 无参数–stop() 只是清除了当前的动画,并不会立即完成,后面队列中的动画依旧还在,还会运行。

     $("button").click(function(){
         var div=$("div");
         div.animate({height:'300px',opacity:'0.4'},"slow");
         div.animate({width:'300px',opacity:'0.8'},"slow");
         div.animate({height:'100px',opacity:'0.4'},"slow");
         div.animate({width:'100px',opacity:'0.8'},"slow");
            
     });
        
     $("#stop").click(function(){
         $("div").stop();
     });
    
  2. 第一个参数为true–stop(true) 会停止后续的动画队列,把动画暂停到某一状态,后续还可以在这个基础上进行

     $("#stop").click(function(){
         $("div").stop(true);//只是暂停了所有的动画,以后还可以在暂停的基础上进行
     });
    
  3. 第二个参数为true–stop(false,true) 点击会立即完成当前的动画,第一个参数为false,就是不会清除后续动画,还可以运行后面的动画,再次点击还是会清除第二个动画,并立即完成。

     $("#stop").click(function(){
     $("div").stop(false,true);
         //让当前动画立即完成,后续的动画紧接着执行,再次点击会立即完成第二个。依次进行。
     });
    
  4. 第二个参数为true–stop(true,true) 点击会立即完成当前动画,并且后续的动画,也会清除,但是还是会存在,下次点击还是会在这个基础上进行。

     $("#stop").click(function(){
     $("div").stop(false,true);
         //让当前动画立即完成,后续的动画也会暂停。
     });
    
  5. 停止效果 并不仅仅是用来停止动画。

$(document).ready(function(){
    $("#flip").click(function(){
        $("#panel").slideDown(5000);//添加滑动效果
    });
    $("#stop").click(function(){
        $("#panel").stop();//停止当前元素的滑动效果
    });
});

jQuery执行链

链允许我们在同一个元素上执行完一个命令后紧接着执行另一个动作,就不用给一个元素多次添加事件了。例如上面的动画例子

$('div').animate({height:'300px'}).animate({width:'300px'}).animate({height:'100px'});
//这样书写会让同一个div元素依次执行三个动画动作,不用每次都添加了

HTML

DOM操作–获取并设置改变内容

括号中没有内容时,就是获取内容。括号中有内容时,就是设置内容的值

text() 设置或返回所选元素的文本内容

<p id="test">这是段落中的<b>粗体</b> 文本。</p>

$("#btn1").click(function(){
    alert("Text: " + $("#test").text());//只是获取p标签的内容,不包含其中的标签。
    //Text: 这是段落中的粗体文本。
});

//-------------设置内容----------------
$("#btn1").click(function(){
    $("#test").text('改变了段落内容')
    alert("Text: " + $("#test").text());//会改变p标签的文本内容
    //Text: 改变了段落内容
});

html() 设置或返回所选元素的内容(包括 HTML 标记)

<p id="test">这是段落中的<b>粗体</b> 文本。</p>

$("#btn1").click(function(){
    alert("HTML: " + $("#test").html());//并不只是获取p标签的内容,还包含其中的标签。
    //HTML: 这是段落中的 <b>粗体</b> 文本。
});

//-----------设置节点内容---------------
$("#btn1").click(function(){
    $("#test").html('改变了<b>段落</b>内容')//改变了p标签的内容包括其中的节点
    alert("HTML: " + $("#test").html();//
    //HTML: 改变了<b>段落</b>内容
});

val() 设置或返回表单字段的值

<input type="text" id="test" value="我是abc">

$("button").click(function(){
    alert("值为: " + $("#test").val());//获取的是表单元素的value值
    //我是abc
});

//------------设置value值------------------
$("button").click(function(){
    $("#test").val('改变value值')//改变value值
    alert("值为: " + $("#test").val());//获取的是表单元素的value值
    //改变value值
});

DOM操作–获取属性

<a href="http://www.baidu.com" id="abc">百度</a>

$("button").click(function(){
    alert($("#runoob").attr("id"));//用于获取属性id的值,
    //abc
})

append() - 在被选元素内的结尾插入内容 prepend() - 在被选元素内的开头插入内容

after() - 在被选元素之后插入内容(元素外) before() - 在被选元素之前插入内容(元素外)

删除元素

<div id="div1" style="height:100px;width:300px;border:1px solid black;background-color:yellow;">
    
    这是 div 中的一些文本。
    <p>这是在 div 中的一个段落。</p>
    <p class="italic">这是在 div 中的另外一个段落。</p>

</div>

remove() - 删除被选元素(及其子元素)

$("#div1").remove();//该方法会删除div元素及其中的文本和子元素。

empty() - 从被选元素中删除子元素

$("#div1").empty();//该方法会删除div元素中的所有子元素及其文本
remove()方法接受一个参数,用来过滤被删除的元素
$("p").remove(".italic");//该方法会删除class="italic"的p元素。并不会删除其他的P元素。

获取并设置 CSS 类

.blue { color:blue; }
.fontW { font-weight:bold; }

addClass() - 向被选元素添加一个或多个类

removeClass() - 从被选元素删除一个或多个类

toggleClass() - 对被选元素进行添加/删除类的切换操作

$("button").click(function(){
    $("h1,h2,p").toggleClass("blue");//标签中内容的颜色在按钮点击后会在黑色和蓝色之间切换
});

css() - 设置或返回样式属性

只有属性时,作用是返回该属性的属性值。

width()获取元素本身的宽度 width(‘400px’)设置元素的宽度为400px;

$("button").click(function(){
    alert( $("#div").width(); )//获取div的宽度
    $("#div").width('500px');//设置div的宽度为500px;
});

innerWidth(),outerWidth()方法与之类似,也可以设置相应的值,但是设置的值都是元素本身的宽高

遍历

向上遍历祖先节点

parent() — 找到指定元素的直接父元素

语法: $(selector).parent();

$("span").parent();//找到所有span标签的直接的fu'yuan

parents() — 找到指定元素的所有父元素

$("span").parents();//找到所有span标签的所有父元素,直到<html>标签为止(包括html)
$("span").parents('p');//找到所有span标签的所有父元素中标签为p的所有标签,直到<html>标签为止(包括html)

parentsUntil(‘界定元素’) — 找到指定元素与界定元素之间的所有祖先元素

$("span").parentsUntil("div");//找到span标签和div标签中所有的span祖先节点,如果有多个div,则找最近的div,在之间找。

向下遍历子元素

children() — 返回被选元素的所有直接子元素。

$("div").children();//找到div元素下的所有的直接子元素。
$("div").children('p');//找到div元素下的所有的直接子元素中标签为p的元素。

find(‘*’) — 返回被选元素的所有的后代元素,一路向下直到最后一个后代。

$("div").find("*");//找到div标签下所有的子代元素;
$("div").find("p");//找到div标签下所有的标签为<p>的子代元素;

同胞遍历

siblings() — 找到指定元素父级下的所有的兄弟元素

$("h2").siblings();//找到h2标签的所有兄弟节点

过滤全部兄弟节点

$("h2").siblings("p");//找到h2兄弟节点中标签为<p>的节点

next() — 找到指定元素的下一个兄弟元素(一个)

$("h2").next();//找到h2标签的下一个兄弟节点

nextAll() — 找到指定元素之后的所有兄弟元素(>=1)

$("h2").nextAll();//找到h2标签之后的所有兄弟节点;

过滤之后兄弟节点

$("h2").nextAll('p');//找到h2标签之后的所有兄弟节点中标签为<p>的节点;

nextUntil(‘限定元素’) — 找到指定元素之后和限定元素间的所有兄弟元素

$("h2").nextUntil("h6");//找到h2标签和h6标签中所有的兄弟节点,不包含他俩。

遍历-过滤方法

first() — 被选元素的首个元素

$("div p").first();//找到第一个div中的第一个p标签;并不是所有div下的第一个P标签。

last() — 被选元素的最后一个元素。

$("div p").last();//找到最后一个div中的最后一个p标签;并不是所有div下的最后一个P标签。

eq() — 返回被选元素中带有指定索引号的元素。正数从前往后找,负数从后往前找 ```html

菜鸟教程 (index 0).

http://www.runoob.com (index 1)。

google (index 2).

http://www.google.com (index 3)。

```js
 $("p").eq(1).css("background-color","yellow");