jQuery入门

1、jquery入口函数

$(function(){
      ...            //页面加载完的入口    
});

$(document).ready(function(){
      ...            //页面加载完的入口    
});

  1.等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成,jQuery帮我们完成了封装。

  2.相当于原生js 中的DOMContentLoaded。

  3.  不同于原生js 中的load事件是等页面文档、外部的js文件、css文件、图片加载完毕才执行内部代码.

 

2、顶级对象$ (jQuery的别称)

3、jQuery对象和DOM对象

原生JS获取的对象为DOM对象,jQuery获取的对象为jQ对象

     // 1. DOM 对象:  用原生js获取过来的对象就是DOM对象
        var myDiv = document.querySelector('div'); // myDiv 是DOM对象
        var mySpan = document.querySelector('span'); // mySpan 是DOM对象
        // 2. jQuery对象: 用jquery方式获取过来的对象是jQuery对象。 本质:通过$把DOM元素进行了包装
        $('div'); // $('div')是一个jQuery 对象
        $('span'); // $('span')是一个jQuery 对象
jQuery 对象只能使用 jQuery 方法,DOM 对象则使用原生的 JavaScirpt 属性和方法

两个之间可以转换:

  1、DOM转jQ:$(DOM对象);

 var myvideo = document.querySelector('video');
$(myvideo);

  2、jQ转DOM:$('div')[index]  /  $('div').get(index)   index为索引号

        $('video')[0].play()
        $('video').get(0).play()    

 

 

4、jQ常用API

  1、基础选择器  $('选择器')

 

   2、层级选择器

 

   3、样式设置:$('div').css('属性', '值');

原理:隐式迭代:遍历循环内部DOM元素(伪数组)的过程。就是不用像以前一样循环一个个设置

  4、筛选选择器

 

   5、筛选方法

多个父级,即爷爷,祖父等:parents(' 指定');  括号内可加指定类名等指定父系

 

  6、链式编程

$(this).find('a').css('display','block').siblings('li').find('a').css('display','none');

 

5、样式操作

  1、css

如果只写属性不写值,则返回值

$('div').css('color');    //返回颜色

可以以对象的形式写多个样式

$("div").css({
                width: 400,
                height: 400,
                backgroundColor: "red"
                    // 如果是复合属性则必须采取驼峰命名法,如果值不是数字,则需要加引号
            })

  2、设置类样式

            // 1. 添加类 addClass()
            $("div").click(function() {
                // $(this).addClass("current");
            });
            // 2. 删除类 removeClass()
            $("div").click(function() {
                $(this).removeClass("current");
            });
            // 3. 切换类 toggleClass()
            $("div").click(function() {
                $(this).toggleClass("current");
            });    

 

6、效果

显示隐藏:show(速度,线性效果,回调函数); hide(速度,线性效果,回调函数); toggle(速度,线性效果,回调函数);

滑动:slideDown(速度,线性效果,回调函数); slideUp(); slideToggle();

淡入淡出:fadeIn(速度,线性效果,回调函数); fadeOut(); fadeToggle(); fadeTo(速度,透明度,线性效果,回调函数);     速度,透明度必须写

自定义动画:animate()

 

事件切换:鼠标经过和离开的复合写法

hover([over]鼠标经过函数,out鼠标离开函数) 

如果里面只写一个函数,那么鼠标经过和离开都会触发这个函数

 

停止动画排队

动画或者效果一旦触发就会执行,如果多次触发,就会造成动画或效果排队执行。

停止排队:stop(); 方法卸载动画的前面,停止上一次动画;不能写在后面,写在后面就是停止本次动画。

 

自定义动画

animate(params, [speed], [easing], [fn])    //动画只能是针对元素,不能针对文档

                $("body, html").stop().animate({
                    scrollTop: 0
                });
                // $(document).stop().animate({
                //     scrollTop: 0
                // }); 不能是文档而是 html和body元素做动画    

 

params: 想要更改的样式属性,以对象形式传递,必须写。属性名可以不用带引号,如果是复合属性则需要采取驼峰命名法borderLeft。其余参数都可以省略。

 

$("button").click(function() {
                $("div").animate({
                    left: 500,
                    top: 300,
                    opacity: .4,
                    width: 500
                }, 500);
            })

 

 

7、属性

设置或者获取元素固有属性:prop();

设置或者获取元素自定义属性:attr();

数据缓存,页面刷新数据将清除:data();

 

在checkbox中,jq提供  :check  选择器,返回一个包含已选中的个数的数组,可使用数组长度来判断是否全选

$('.s').change(function () {
            if ($('.s:checked').length == $('.s').length
) {
                $('.all').prop('checked', true);
            }else{
                $('.all').prop('checked', false);
            }
        });

 

8、内容

普通元素内容:html();   标签也获取

文本内容:text();

表单内容:val();

 

9、元素操作

隐式迭代是对同一元素执行相同操作。若要给不同元素做不同操作,还是要用遍历的方式。each()

  1、操作对象

$ ( "div" ) .each (function (index, domEle) { xxx; })

index是元素的索引号,domEle是每个DOM元素对象,所以要转换成jq对象

var colors = ['red','blue','green'];
    $('div').each(function(i,domEle){
        $(domEle).css('backgroundColor',colors[i]);
    })

  2、主要用于遍历数据、数组,处理数据

$.each(object , function (index, element) { xxx; })

$.each()可以遍历任何一个对象;index索引号,element遍历内容

$.each({
                name: "andy",
                age: 18
            }, function(i, ele) {
                console.log(i); // 输出的是 name age 属性名
                console.log(ele); // 输出的是 andy  18 属性值
            })

  3、创建元素、添加元素

var li = $('<li></li>');
1、内部添加  父子关系
$('ul').append(li);  //放到匹配元素的最后面
$('ul').prepend(li);  //放到匹配元素的最前面 

2、外部添加  兄弟关系
var div = $("<div>后来的</div>");
$(".test").after(div);    //.test后面添加
$(".test").before(div);    //.test前面添加

3、删除元素
$("ul").remove(); 可以删除匹配的元素 自杀
$("ul").empty(); // 可以删除匹配的元素里面的子节点  不删除自身
$("ul").html(""); // 可以删除匹配的元素里面的子节点 孩子

 

10、尺寸、位置操作

尺寸:

 

 位置:

offset();  距离文档的偏移位置,与父级无关    offset({top:10, left:10}); 可以设置

position(); 距离带定位 父级的偏移位置,不可以设置

 scrollTop() / scrollLeft()设置或者获取元素被卷去的头部或左侧

 

11、jQ事件

on:绑定

  1、on可以绑定多个事件

$("div").on({         //一个on内可以写多个事件执行不同函数
                mouseenter: function() {     
                    $(this).css("background", "skyblue");
                },
                click: function() {
                    $(this).css("background", "purple");
                }
            });
$("div").on("mouseenter mouseleave", function() {    //多组写在一个上,执行同一函数
                $(this).toggleClass("current");
            });

  2、on委派

事件委派:把原来加给子元素身上的事件绑定在父元素上,这就是事件委派给父元素。

$('ul').on('click', 'li', function(){     //click绑定在ul上,但是触发对象是li
   alert(1);   
})

  3、给动态创建的元素创建绑定事件

var li = $('<li></li>')
$('ul').append(li);
$('ul').on('click', 'li', function(){    //ul是存在的
   alert(1); 
})

off:解绑

  1、off解绑事件

 $("div").off();  // 这个是解除了div身上的所有事件
$("div").off("click"); // 这个是解除了div身上的点击事件
$("ul").off("click", "li");  //这是是解除了事件委托上的绑定

  2、事件触发一次 one()

$("p").one("click", function() {
                alert(11);
            })

自动触发事件:trigger()

比如点击事件

            $("div").on("click", function() {
                alert(11);
            });

            // 1. 元素.事件()
            $("div").click(); //会触发元素的默认行为
            // 2. 元素.trigger("事件")
            $("div").trigger("click"); //会触发元素的默认行为,比如表单focus后光标闪烁
            $("input").trigger("focus");
            // 3. 元素.triggerHandler("事件") 就是不会触发元素的默认行为,光标不闪烁
            $("div").triggerHandler("click");
            $("input").triggerHandler("focus");    

事件对象:Event

就是function(e)内的event

和之前的e一样,e.stopPropagation(); e.preventDefault();

 

12、其他方法

  1、拷贝对象:$.extend ( [deep], target, object1, [objectN])      深浅拷贝(默认浅拷贝)、目标、拷贝对象(可写多个)

   2、jq的多库共存:如果他库或者自定义函数也有$,jquery可以使用jQuery代替$;或者$.noConflict()代替    var xxx = $.noConflict(); 自定义jQ名;

  3、jQ插件:瀑布流图片、图片懒加载、全屏滚动展示、bootstrap等等插件。

 

13、图片懒加载

页面滑到可视区域再显示图片,减小服务器压力

easyLazyload.js等插件

posted @ 2021-08-26 16:35  Jacky02  阅读(69)  评论(0)    收藏  举报