jQuery的基本功能用途遍历等

jQuery

jquery针对DOM处理

jQuery1.0 兼容各个浏览器

jQuery2.0不支持IE6/7/8

jQuery3.0

jQuery的功能

1.像CSS那样访问和操作DOM

2.修改CSS控制页面外观

3.简化JavaScript代码操作

4.事件处理更加容易

5.各种动画效果使用方便

6.让Ajax技术更加完美

7。基于jQuery大量插件

8.自行拓展功能插件

jQuery的优势

jQuery的最大优势是特别方便,jQuery代码兼容性好,不需要考虑不同浏览器的兼容问题

jQuery选择器

标签名选择器$(“div”)

id选择器$(#div1)

class选择器$(".div0")

通配符选择器$("*")

后代选择器$(“div.div1”)

子代选择器$(“div>div1”)

下一个兄弟选择器$(".div+div")

下面所有的兄弟选择器$(".div~div")

$("div.div1");//div中类名是div1的div
$("div .div1")//div后代中类名是div1的元素
$(".div1>*");//类名是div1所有的子元素
conloge.log($(".div1>*").length);//div1子元素的数量
conloge.log($(".div1>*").length);//div1子元素的数量
$(".div+*")//div1下一个任意兄弟元素
$(".div+")//div1下一个任意兄弟元素

$(".div1").next();//等同于$(".div1+")  下一个兄弟元素
$(".div1").nextAll();//等同于$(".div1~")  标记元素后面的所有兄弟元素
$(".div1").nextUntil(".div2")//div1到div2之间的所有兄弟元素

$(".div1").prev();//向上的一个兄弟元素
$(".div1").prevAll();//向上的所有兄弟元素
$(".div1").prevUntil(".div2");//向上到div2的所有兄弟元素

$(".div1").find("span");//等同于$(".div1  span")    div1中的span元素
$(".div1").children();//相当于$(".div>");   div1的所有子元素
属性选择器
console.log($("div[a]"));//[a]表示是否具备标签属性a
conloge.log($("[a]"))//表示具备标签属性a
conloge.log($("[a=1]"));//标签必须具备a属性,并且属性值为1
conloge.log($("[a^=1]"));//属性值开头是1的元素
$("[b|=ab]").css("color","red");//值是ab或者以ab起头的后面使用-来连接的元素
$("[b~=ab]").css("color","red");//值是ab或者以空格分隔内容中包括ab的元素

//一般用于Class的多个样式选择
$("[b$=b]")//值以b结尾的元素
$("[b!=-ab]")//值不是ab的元素
$("[b*=c]");//值中包含c这个字符的元素
$("[a][b]");//有属性a和属性b的元素

jQuery过滤器

//将所有li放在一个列表中筛选出第一个元素
$("li:first").css()
$("li").first()
$("li:first-child").css()//选择每个li中父元素中的第一个子元素,如果是li的筛选出来
$("li:first-of-type").css()//将每一个li父元素中的第一个li类型的子元素筛选出来

//将所有li放在一个列表中,筛选出最后一个元素
$("li:last")
$("li").last()
$("li:last-child")//选择每个li中父元素中的最后一个子元素,如果是li的筛选出来
$("li:last-of-type")//将每一个li父元素中的最后一个li类型的子元素筛选出来

$("ul>:not(li)")//ul所有子元素中不是li元素的
$("ul>").not("li")//等同于上面的
$("li:even")//li的父元素的子元素列表的偶数项,这种是从0开始计数的
$("li:odd")//li的父元素的子元素列表的奇数项

$("li:nth-child(2)").css("color","red");//将每个li父元素中的第二个元素筛选出来
$("li:nth-of-type(3)").css("color","red")//将每个li父元素中第三个li筛选出来
$("li:nth-child(even)")//li的父元素的子元素列表的偶数项,列表从1开始计数
$("li:nth-of-type(even)")//li的父元素中的所有li组成一个列表中的偶数项,列表从1开始计数
$("li:nth-child(odd)")//li的父元素的子元素列表的奇数,列表从1开始技术
$("li:nth-of-type(odd)")//li的父元素中的所有li组成一个列表中的奇数项列表从1开始计数
$("li:nth-child(2n)")//li的父元素的子元素的偶数项,列表从1开始计数
$("li:nth-child(2n-1)")//li的父元素的子元素的奇数,列表从1开始计数
$("li:eq(2)").css("color","red");//选出li父元素的子元素列表中的第二个子元素,并将第一个父元素中的筛选出来,列表从0开始计数
$("li").eq(2)
$("li:gt(2)").css("color","red");//将所有的li放在一个列表中。筛选出列表中下标大于2的所有元素
$("li:lt(2)").css("color","red");//将所有的li放在一个列表中。筛选出列表中下标小于2的所有元素

$(":header");//所有h1-h6的元素
$(":animated");//所有使用aniamte动画的元素
$(":focus"); //聚焦元素
console.log( $(":empty"));//没有内容或者子元素的元素
console.log($(".div1:has(.div2)"));//含有div2的内容的div1元素
console.log($(".div2:parent"));//判断div2有子元素的或者有内容的
$(".div2").parent()//获取div2的父元素
$(".div2").parents()//获取div2的所有父元素
$(".div2").parentsUntil("html")//获取div2的所有父元素中到什么之前的
$(".div1:contains(1)")//判断元素的后代中有1这个内容的元素
$(".div4:hidden")//隐藏元素,针对display:none或者是不显示的元素         visibility: hidden;不是隐藏,因为它占位了
$(":visible")//显示元素
$(":only-child") //只有一个子元素的元素
$("div").is(".div1")//这个方法得到一个布尔值,是否在div中有类名是div1的元素
$("div").hasClass("div1")//这个方法得到一个布尔值,是否在div中类名是div1的元素
$("li").slice(2,4)//div列表中选择从第2个到第4个之前的元素
$(":input")//
$(":text");//type=text的input
$(":password");

$(":disabled");//不可用
$(":enabled");//可用
$(":checked");//用于input中checkbox和radio
$(":selected");//用于下拉菜单的元素

jQuery遍历

var arr=[1,2,3,4];
        $.each(arr,function(index,item){
            console.log(index,item);
        });

var obj={a:1,b:2,c:3};
        $.each(obj,function(key,value){
            console.log(key,value);
        }) 

//静态方法
 $.each($("div"),function(index,item){
            console.log(index,item);
        })
//实例化元素方法
 $("div").each(function(index,item){
            console.log(index,item);
        })

jQuery内容

$("div").html("");//div.innerHTML=""
$("div").html("<span>你好</span>");//增加span元素
console.log($("div").html());//获取列表中第一个元素的内容
console.log( $("div").text());//将所有列表中的元素的内容和为一个字符串返回
$("div").text("你好");//为每个div添加相同内容

//为每个div添加不同的内容
var arr=["北京","上海","深圳","天津"];
        $("div").text(function(index){
            return arr[index];
        })

//将每次输入的内容打印出来
$("input").on("input",function(){
            console.log($(this).val());
            // console.log(this.value)
        }) 


 $("input").val(10);//将每个input的内容都添加为10

//为每个input的内容添加为当前index+1
$("input").val(function(index){
            return index+1;
        })

jQuery属性

attr prop data

attr是设置在DOM标签上的属性

prop是设置在DOM对象上的属性

data是在设在jQuary映射对象上的属性,为了不污染DOM对象属性

console.log($("div").attr("a"))//只能获取到列表中第一个元素a的属性值
 $("div").attr("b","10");//为每个div添加一个b的属性属性值为10

//为每个div添加一个c的属性,属性值为当前index+1
$("div").attr("c",function(index,item){
        return index+1;
    })

//为div设置不同的属性
 $("div").attr({
        b:"1",
        c:function(index,item){
            return index+1;
        }
    })

$("div").prop("b",10);//设置了jQuery列表中所有DOM的对象属性增加b
console.log($("div").prop("b"));//从列表中取第一个元素的DOM对象属性b的值

//多选框
$(":checkbox").attr("checked","checked")
    .on("click",function(){
        $(this).removeAttr("checked");
    }) 

$("div").data("abc",10);//设置在一个jQuery映射对象上
$("div").removeAttr("a");//删除jQuery列表中所有DOM的对象属性的a属性

jQuary的CSS样式

为每一个div的class添加一个div1$("div").css("width",50);
$("div").css("width","50px");
$("div").css("width","50");//都能设置宽度

//设置div的宽度为index+1再乘以50
$("div").css("width",function(index,item){
    return (index+1)*50
})
//不但可以获取行内样式的值,也可以获取css设置计算后的样式
cosole.log($("div").css("width"))

console.log($("div").css(["width","height",
                          "backgroundColor"]));// 获取第一个元素的指定样式值,返回一个对象
 $("div").addClass("div1");//为每一个div的class添加一个div1
 $("div").addClass("div1 div2");//为每个div的class添加一个div1 div2
 $("div").removeClass("div1");//为每一个div的class删除一个div1
$("div").removeClass("div1 div2");//为每个div的class删除一个div1 div2

//当点击时删除原有的div
 var bool=false;
        $("div").on("click",function(){
            bool=!bool;
           if(bool) $(this).removeClass("div1").addClass("div2");
           else $(this).removeClass("div2").addClass("div1");
        }) 

//同上
$("div").on("click",function(){
            $(this).toggleClass("div2");
        }) 

console.log($("div").width());//内容宽度width
 $("div").innerWidth(100);//设置内容宽度+padding
console.log( $("div").innerWidth())//获取内容宽度+padding
/console.log($("div").outerWidth());//offsetWidth,width+padding+border
$("div").outerWidth(100);//设置outerWidth
 console.log($("div").outerWidth(true));//width+padding+border+margin  只能获取不能设置
console.log($(".div3").offset());//元素相对页面左上角的位置
console.log($(".div3").position());//得到的是定位位置,和offsetLeft,offsetTop  不能设置
console.log($(".div2").scrollTop())// 获取和设置滚动条位置

jQuery的DOM

append

$("body").append("<div></div>"); // 这种写法返回body的jQuery的对象

appendTo

$("<div></div>").appendTo("body");
 // 这种写法返回的是div的jQuery对象
//在每个div加入span
$("div").append(function(index,item){
            return "<span>"+index+"</span>";
        })

$("<div></div>").prependTo(".div1");
// 插入父元素的第一个子元素位置
$(".div1").prepend("<div></div>");

// 插入在兄弟元素后面
$(".div1").after("<div></div>");
$("<div></div>").insertAfter(".div1");

// 插入在兄弟元素前面
$(".div1").before("<div class='divs'></div>")
$("<div></div>").insertBefore(".div1");

$("div").wrap("<a></a>");//给每个元素外面的包裹一个a标签
$("div").wrapAll("<a></a>");//给所有元素外面包裹一个a标签
$("span").unwrap();//将包裹的父元素删除
$("div").wrapInner("<a></a>");//给每个div的内容包裹一个a标签

//复制(全是深复制)
$("div").clone(false);//false不复制事件
$("div").clone(true);//true就是连带事件一起复制

//删除元素
div.remove();//删除元素的时候会将所有元素的事件也删除注销
div.detach();//仅删除元素,事件保留
$(".div1").empty();//清除元素的所有子元素和内容

//将div1转化为a
$(".div1").replaceWith("<a></a>");
$("<a></a>").replaceAll(".div1");

jQuery事件

$("div").on("click.a",function(e){
            // console.log(e);
            console.log("a");
            $(this).off("click.a");//命名空间可以解决删除事件的问题
            // 将所有click事件的内容全部删除
        }).on("click.b",function(){
            console.log("b");
        })

 var obj={
           a:1,
           b:function(){

                // $("div").on("click",this,function(e){
                // //    console.log(e);
                //     // e.data就是obj 也就是上面传入的this
                //  })

                 $("div").on("click",{a:this.a,b:10},function(e){
                   console.log(e.data);
                    // e.data就是obj 也就是上面传入的this
                 })
           }
       }
       obj.b();


   $("form").trigger("submit");//会触发默认事件
   $("form").triggerHandler("submit");//这个不会触发默认事件
  
//拖拽
$("div").mousedown(function(e){
        var div=$(this);
        e.preventDefault();
        $(document).mousemove(function(e1){
            div.css({
                left:e1.clientX-e.offsetX,
                top:e1.clientY-e.offsetY,
            })
        }).mouseup(function(){
            $(this).off("mousemove mouseup");//移除多个事件
        })
    })


 $(document).ready(function(){
        // 当DOM全部创建完成后,图片没有加载完成前
      })
      window.onload=function(){

      } 

//设置鼠标划入时变成绿色,划出时变成红色
//hover()方法时结合了.mouseenter()方法和.mouseleave方法,并非是.mouseover()和.mouseout()方法
 $("div").hover(function(){
          $(this).css("backgroundColor","green")
      },function(){
        $(this).css("backgroundColor","red")
      })
.trigger()与.triggerHandler()的区别

1、.triggerHandler()并不会出发时间的默认行为,而.trigger()会

$("form").trigger("submit");//模拟用户执行提交,并跳转到执行页面
$("form").triggerHandler("submit");//模拟用户执行提交,并阻止事件的默认行为
//如果我们希望使用.trigge()来模拟用户提交,并且阻止事件的默认行为,则可以这么写
$("form").submit(function(e){
    e.preventDefault();//阻止默认事件
}).trigger("submit")

2、.triggerHandler()方法只会影响到第一个匹配到的元素而.trigger()会匹配到所有

3、.triggerHandler()方法会返回当前事件执行的返回值,如果没有返回值,则返回undefined。而.trigger()返回当前包含事件触发元素的jQuery对象

4、.trigger()在创建事件的时候会冒泡。但这种冒泡是自定义事件才能体现出来,是jQuery拓展于DOM的机制,并非DOM的特性。而.triggerHandler()不会冒泡

jQuery动画

隐藏与显示
 $("div").hide(2000)//隐藏
 .show(2000);//显示

在无参数时,两个都是硬性的显示内容和隐藏内容

注意:hide()方法其实是在行内设置css代码:disolay:none

而show()是根据原来元素是区块还是内联来决定的。如果是区块,则设置css代码:display:block;如果内联,则设置css代码:display:inline

 $("div").hide(2000,function(){
            $(this).toggle(2000);
        })
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值