jQuery笔记

1.选择器 & 添加样式

$('.selected-ul>li').addClass('numberli')
document.querySelectorAll('.selected-ul>li')[0].className='numberli'

2.jQuery注意事项


//1.jQuery会比原生js优先执行

//2.解决img标签中https无法显示图片问题
<meta name="referrer" content="no-referrer">
 
//3.jQuery不会覆盖,js会覆盖
    
//4.$('div') 返回的是一个伪数组,伪数组的__proto__是object
    
//5.$("img").width()获取img宽度
//  $("img").width(12)设置img宽度 如果不添加eq(),则默认为第一个

3.静态方法和实例方法

//静态方法
function Student(){}
Student.like=function(){
    ...
}
//静态方法调用
Student.like()
//实例方法
function Student(){}
Student.prototype.like=function(){
   ...
}
//实例方法调用
let student=new Student()
student.like()

4.$.each()

//forEach()只能遍历真数组,不能遍历伪数组
arr.forEach(function(value,index){})
//利用jQuery的静态方法遍历伪数组
$.each(arr,function(index,value){})

5.$.map()

//map()只能迭代真数组,不能迭代伪数组
arr = arr.map(function (value, index, arr) {return value * 2;});
//$.map()用来迭代伪数组
const res= $.map(obj,function(value,index){return value*2})

6.其他静态方法

$.trim()
$.isArray()
$.isWindow()
$.isFunction()
//暂停入口函数执行
$.holdReady(boolean)

7.jQuery内容选择器

//empty 没有文本内容也没有子元素的指定元素
$('div:empty')
//parent 有文本内容或有子元素的指定元素
$('div:parent')
//contains 包含文本内容的指定元素
$('div:contains('我是div')')
//has 包含指定子元素的指定元素
$('div:has('span')')

8.attr()和removeAttr()

//获取属性节点,如果获取多个,默认第一个
$('div').attr('class')
//设置所有找到元素指定的属性节点
$('div').attr('score',98)
//删除所有找到元素指定的属性节点
$('div').removeAttr('score')

9.prop()

//在jQuery中,prop()函数的设计目标是用于设置或获取指定DOM元素(指的是JS对象,Element类型)上的属性(property);
//attr()函数的设计目标是用于设置或获取指定DOM元素所对应的文档节点上的属性(attribute)。

//跟attr效果一样
//prop除了能操作属性还能操作属性节点  注: removeProp只能删除prop设置的自定义属性

//true和false时如checked,selected,disabled,使用prop,其他使用attr
let $input1=  $("input").attr("checked");//checked
let $input2= $("input").prop("checked");//true

10.类操作方法

//添加类 
$('div').eq(0).addClass(classname1 classname2)
//移除类
$('div').eq(0).removeClass(classname)
//切换 有就删除,没有就添加
$('div').eq(0).toggleClass(classname1 classname2)

11.文本值的相关操作

$('div').html('<p>1</p>')
$('div').text('hhhh')
$('input').val('value')

12.类样式

//单个设置
$('div').css('width','100px')
//批量设置
$('div').css({
     width:"200px",
     height:"200px",
     background:"#1abc9c",
     border:"none"
})
//链式设置
$('div').css('width','200px').css('heiggt',"200px").css('background','red')

//获取样式
$('div').css('width')

13.位置操作

//设置元素距离窗口偏移位
   $(".son").offset({
       left: 10
   })
 //position()//距离定位元素偏移位
   console.log($(".son").position().left);

14.scrollTop()

$("div").scrollTop()

15.事件绑定

 //jQuery有两种绑定事件的方式
 // 1.eventName(fn)
 //编码效率略高,部分事件jQuery没有实现,所以不能添加
 $("button").click(function () {
     alert("he");
 })
 $("button").mouseleave(function(){
     alert("out");
 })
 $("button").mouseenter(function(){
     alert("over");
 })
 //2.on(eventName,fn)
 //编码效率略低,所有事件均可实现
 $("button").on("click",function () {
   alert("kao");
 })

16.事件解绑

 function test1(){
   alert("he");
 }
 $("button").click(test1);
 //事件解绑
 //off()第二个参数为空时,解除该元素全部click事件
 $("button").off("click",test1)

17.自定义事件

 //自定义事件两个条件
 /*
  1.事件必须通过on来绑定
  2.事件必须通过trigger来触发
 */
 $(".son").on("myclick", function () {
     alert("on");
 });
//注:trigger会立即触发
 $(".son").trigger("myclick");

18.委托delegate()

            $("ul").append("<li>我是新增的li</li>");
            })
            // $("ul>li").click(function () {
            //     console.log($(this).html());//新增的li没有点击事件   html()类似于innerHTML;
            // })
            $("ul").delegate("li", "click", function () {
                console.log($(this).html());//this指向li?
            })

19.鼠标进入离开事件

            //用mouseover和mouseout受子元素冒泡影响
            // $(".father").mouseover(function () {
            //    console.log("我进来了!!");
            // })
            // $(".father").mouseout(function () {
            //   console.log("我又出来了!");
            // })

            //用mouseenter和mouseleave不会受子元素影响
            // $(".father").mouseenter(function () {
            //     console.log("我进来了!!");
            // })
            // $(".father").mouseleave(function () {
            //     console.log("我又出来了!");
            // })

            //hover方法两个事件,若只添加一个事件则移入移出相同
            $(".father").hover(function () {
                console.log("移入事件");
            }, function () {
                console.log("移出事件");
            });

20.siblings()取反

             //siblings()表示其他索引
            //index()表示索引         
           $(".nav>li").mouseenter(function () {
                $(this).addClass("current");
                //    console.log($(this).index());
                $(this).siblings().removeClass("current");

            })
           // console.log($(".nav>li").eq(1).siblings());

21.显示和隐藏动画

//宽度高度逐渐改变
//有两个参数,第一个是时间,单位是毫秒。第二个是fn(),动画结束后的事件
//显示动画  display:block;
$("div").show(1000,fn)
//隐藏动画  display:none;
$("div").hide(1000,fn)
//切换 无时间变化
$("div").toggle(1000);

22.展开和收起动画

//高度逐渐改变
//展开动画
$("div").slideDown(1000,fn);
//收起动画
$("div").slideUp(1000,fn);
//切换
$("div").slideToggle(1000);

23.折叠菜单

            let flag = true;
            $(".nav>li").eq(0).click(function () {

                if (flag) {
                    $(".sub").stop();
                    $(".sub").slideDown(1000);
                    flag = false;
                }
                else {
                    $(".sub").stop();
                    $(".sub").slideUp(1000);
                    flag = true;
                }
            })

24.折叠菜单

            $(".nav>li").click(function () {
                //children查找指定元素的儿子
                //拿到二级菜单
                var $sub = $(this).children(".sub");
                //使二级菜单展开                
                $sub.slideDown(1000);
                //拿到所有非当前的二级菜单
                var $child = $(this).siblings().children(".sub");
                //使非当前的二级菜单收起
                $child.slideUp(1000);
                //让被点击的一级菜单箭头旋转             
                $(this).children("span").addClass("cur");
                //没点击的一级菜单箭头还原
                $(this).siblings().children("span").removeClass("cur");
            })

25.淡入淡出动画

//淡入淡出动画就是opacity值的改变display:none-1 透明度变化
//淡入动画
$("div").fadeIn(1000,fn)
//淡出动画
$("div").fadeOut(1000,fn)
//切换
$("div").fadeToggle(1000)
//淡入到
$("div").fadeTo(1000,0.5,fn)

26.自定义动画

            $("button").eq(0).click(function () {
                //第一个参数:接收一个对象,可以再对象中修改属性
                //二:指定动画时长
                //三:指定动画节奏,默认是swing
                //四:动画执行后的回调函数
                $(".one").animate({
                    width: 300,
                    marginLeft: 500,
                    // backgroundColor:"yellow"
                }, 1000, "linear", function () {
                    console.log($(this).css("background-color"));
                });
                $(".two").animate({
                    width: 300,
                    marginLeft: 500

                }, 1000, function () {
                    console.log(getComputedStyle(this).backgroundColor);
                })
            });
            $("button").eq(1).click(function () {
                //累加属性
                $(".one").animate({
                    width: "+=100"
                }, 1000, "swing", function () {
                    console.log($(this).width());
                })
            });
            $("button").eq(2).click(function () {
                //关键字!!!!
                $(".one").animate({
                    // width:"hide"
                    width:"toggle"

                }, 1000, function () {
                  console.log(this.offsetWidth);
                })
            });

27.stop()和delay()

              //delay(),延长时间,单位毫秒
              $(".one").animate({
                    width: 300
                }, 1000).delay(1000).animate({
                    height: 300
                }, 1000)
            //立即完成当前的,并且停止后续所有的
            $("div").stop(true,true);

28.添加节点

                // 内部插入
                // append(content | fn)
                // appendTo(content)
                // prepend(content | fn)
                // prependTo(content)
                var $li = $("<li>新添加的节点</li>");
                //添加到末尾
                //  $("ul").append($li);
                //  $li.appendTo("ul");
                //添加到头部,prependTo找到所有ul,并添加li
                // $("ul").prepend($li);
                // $li.prependTo("ul");

             // 外部插入
             // after(content | fn)
             // before(content | fn)
             // insertAfter(content)
             // insertBefore(content)
                var $li = $("<li>外部添加的节点</li>");
                //after()新增到外部的后面
                // $("ul").after($li);
                // $li.insertAfter("ul");
                //before()新增到外部的前面
                // $("ul").before($li);
                $li.insertBefore("ul");

29.删除节点

//div本身也会删除,被移除的元素所绑定的事件及数据也被移除
$("div").remove();
//div本身不会删除,被移除的元素所绑定的事件及数据也被移除
$("div").empty()
//div本身也会删除,被移除的元素所绑定的事件及数据不会被移除
$("div").detach()

30.替换节点

$("div").replaceWith($h1);
$h1.replaceAll("div")

31.复制节点

//浅复制,不会复制点击事件
$("div").clone(false);
//深复制,会复制点击事件
$("div").clone(true);

32.监听文本框的输入

            $("body").delegate("input:text","propertypechange input",function(){
               console.log($(this).val());
            });

33.find()查找子元素

    <script>
        $(function () {
            console.log($("div").find(".li").html());//li标签
         })
    </script>
    <div>
        <ul>
            <li></li>
            <li class="li">li标签</li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
posted @ 2021-08-01 23:20  yongerbingxuan  阅读(52)  评论(0)    收藏  举报