JS(5) jquery学习

1.jquery中的顶级对象
    浏览器中的顶级对象:window,浏览器中和页面中所有的东西都是window的
    页面中的顶级对象:document
    jQuery中的顶级对象:jQuery(简写为$)
2.Jquery对象和DOM对象互转
    jquery对象就是对一个或多个DOM的对象进行的包装或者封装。
    通过DOM方式获取的对象为DOM对象,即通过document.getElementByXXX("")获取的对象
    通过$或者是jQuery的方式获取的对象为jQuery对象,即通过$("")获取的对象
    
    var domObj=document.getElementById("btn");//DOM对象
    var jqyObj=$("#btn");//jquery对象
    
    jquery对象转换成DOM对象:
    首先需要通过jquery对象.length属性是否为0来判断对象是否存在,为0则表示对象不存在,大于0表示对象存在
    如何得到jquery对象中的DOM对象?
    jquery对象[i];//i的范围为[0,jquery对象.length-1]
    jquery对象.get(i);//i的范围为[0,jquery对象.length-1]
    如:$("p")[0],表示第一个P元素的DOM对象,$("p")[1],表示第二个P元素的DOM对象
    遍历jquery对象?
    jquery对象.each(function(i,e){});
    $("img").each(function(i,e){
        this.src = "test" + i + ".jpg";//e=this 这里的e或者this都是DOM对象;i为索引
    });
    
    DOM对象转换成jquery对象:
    var jqyObj=$(domObj);
    
    注意:jquery对象不能调用DOM对象的方法或属性,同样DOM对象不能调用jquery对象的方法和属性
    如,在jquery中,为按钮绑定事件为jquery对象.click方法,而DOM中,为按钮绑定事件为DOM事件.onclick方法
    $("#btn").click(function(){});
    document.getElementById("btn").onclick(){}
    
3.jquery相关方法
    jQuery对象.val();//获取该元素的value属性值
    jQuery对象.val("值");//设置该元素的value属性
    jQuery对象.text();//获取该元素的文本内容
    jQuery对象.text("值");//设置该元素的文本内容
    jQuery对象.css("css的属性名字");//获取元素的样式属性值 如 $("选择器").css("backgroundColor");
    jQuery对象.css("css的属性名字","属性的值");//设置元素的样式属性值 如 $("选择器").css(backgroundColor","yellow");
    jQuery对象.html();//获取标签中的html内容
    jQuery对象.html(html字符串内容);//设置标签中的html内容
    
4.jquery页面加载事件
    1.第一种方式,页面加载完毕后才触发,包括页面中的基本元素和图片等资源
    $(window).load(function () {
     console.log("11111");
   });
    2.第二种方式,比第一种方式快,是页面中的基本的元素加载后就触发
    $(document).ready(function () {
      console.log("2222222222");
    });
    3.第三种方式,是第二种方式的简写
    $(function () {
      console.log("33");
    });
    总结:不管是上面的那种页面加载事件方式,在同一个页面中都可以定义多个,不会出现后面覆盖前面的情况
          通常用第三种
          
5.jquery获取页面元素方式
    DOM中获取元素方式:
    根据id获取元素
    document.getElementById("id属性的值");//返回一个DOM对象
    根据标签名字获取元素
    document.getElementsByTagName("标签名字");//返回一个DOM对象数组
    根据name属性获取元素,如复选框
    document.getElementsByName("name属性的值");//返回一个DOM对象数组
    根据类样式名字获取元素
    document.getElementsByClassName("类样式的名字");//返回一个DOM对象数组
    
    
    jQuery中获取元素的方式:
    $("选择器");//jQuery对象
    
    id选择器
    $("#id属性的值");//返回一个jquery对象
    
    标签选择器
    $("标签名字");//返回一个jquery对象,该对象像数组
    示例:
    $("p").text("11111");//页面中的所有P标签的文本都变成了11111,如果是DOM方式,需要我们自己遍历数组并手动设置文本
    
    类选择器
    $(".类样式名");
    $(".类样式名").css("属性","值");//设置css样式属性值
    $(".cls").css("backgroundColor","yellow");//将cls样式表中添加(修改)背景颜色
    
    交集选择器
    一般是标签选择器+类选择器,即$("标签名.类样式名");
    $("p.cls").css("backgroundColor","green");    //先找p标签,从p标签中找应用了cls类样式的元素
    
    并集选择器
    选择器,选择器,选择器n:$("#id1,p,span.cls");//id为id1的对象,或者p标签对象,或span标签中类样式名为cls的对象
    
    层次选择器
    $("选择器1 选择器2");//选择器1 范围内的所有满足选择器2的对象(包括直接的子元素,孙子元素)
        $("#dv span").css("backgroundColor","red");//获取的是div这个父级元素中所有span标签
    $("选择器1>选择器2");//选择器1下的直接子元素中满足选择器2的对象
        $("#dv>span").css("backgroundColor","red");//获取的是div这个父级元素中直接的子元素
    $("选择器1~选择器2");//选择器1后的所有满足选择器2要求的兄弟元素对象
        $("#dv~span").css("backgroundColor","red");//获取的是div这个元素后面的所有的兄弟元素---span
    $("选择器1+选择器2");//选择器1后第一个元素对象,且这个对象满足选择器2的要求
        $("#dv+span").css("backgroundColor","red");//获取的是div后面第一个直接的span兄弟元素
        
    :first :last
    $("选择器1:first");//所有满足选择器1要求的对象中的第一个对象
        $('li:first');//第一个li标签
    $("选择器1:last");//所有满足选择器1要求的对象中的最后一个对象
        $('li:first');//最后一个li标签
        
    :not("选择器") 取反选择器
        $("#dv~span:not(:first)").css("backgroundColor","red");//id为dv后的所有span兄弟元素中除去第一个外的其他兄弟元素
    
    :even :odd
    $("选择器1:even");//所有满足选择器1要求的对象中的第偶数个对象集合 0 2 4 6
    $("选择器1:old"); //所有满足选择器1要求的对象中的第奇数个对象集合 1 3 5 7
    $("tr:even");//偶数行 
    $("tr:odd");//奇数行
    
    索引选择器
    :eq(索引值) :gt(索引值) :lt(索引值)   等于 大于 小于
    $("选择器:eq(n)");//所有满足选择器要求对象集合中的第n+1个对象 索引从0开始
        $("#dv~span:eq(2)").css("backgroundColor","red");//id为dv后的所有span兄弟元素中的第3个兄弟元素
    $("选择器:gt(n)");//所有满足选择器要求对象集合中的第n+1个对象后的所有对象 索引从0开始
    $("选择器:eq(n)");//所有满足选择器要求对象集合中的第n+1个对象前的所有对象 索引从0开始
        $("ul>li:gt(5):lt(3)").css("backgroundColor","blue");//li的第6个后的所有元素中的前3个,相当于索引号为678的三个元素对象
    
6.元素样式的设置
    $("选择器").css(css属性名,css属性值)
    //第一种写法:
    $("#dv").css("width","300px");
    $("#dv").css("height","200px");
    $("#dv").css("backgroundColor","hotpink");
    $("#dv").css("border","2px solid red");

    //第二种写法:链式编程
    //$("#dv").css("width","300px").css("height","200px").css("backgroundColor","hotpink").css("border","2px solid red");

    //第三种写法:键值对的写法
    var json={"width":"200px","height":"100px","backgroundColor":"pink","border":"2px solid green"};
    $("#dv").css(json);
    
7.类样式的设置
    $("选择器").addClass("类样式名");//添加类样式 可以链式编程
    $("选择器").removeClass("类样式名");//移除类样式 可以链式编程
    $("选择器").hasClass("类样式名");//判断选择器是否应用了这个类样式
    $("选择器").toggleClass("类样式名");//如果没有使用类样式名,则使用,否则就移除该类样式
        $("#dv").addClass("cls");
        $("#dv").removeClass("cls");
    
    注意:css方法是不能添加或者移除类样式的
    
8.获取兄弟元素的方法
    获取下一个兄弟元素
    $("选择器1").next();//选择器1的后面一个兄弟元素对象
    $("选择器1").next("选择器2");//选择器1的后面一个且满足选择器2的兄弟元素对象。和$("选择器1+选择器2")效果一样
    
    获取后面的兄弟元素
    $("选择器1").nextAll();//选择器1的后面所有的兄弟元素对象
    $("选择器1").nextAll("选择器2");//选择器1的后面s所有满足选择器2的兄弟元素对象。和$("选择器1~选择器2");效果一样
    
    获取上一个兄弟元素
    $("选择器1").prev();//选择器1的前面一个兄弟元素对象
    $("选择器1").prev("选择器2");//选择器1的前面一个且满足选择器2的兄弟元素对象
    
    获取前面的兄弟元素
    $("选择器1").prevAll();//选择器1的前面所有兄弟元素对象
    $("选择器1").prev("选择器2");//选择器1的前面所有满足选择器2的兄弟元素对象
    
    获取选择器除自己外所有的兄弟元素
    $("选择器1").siblings();//选择器1的所有其他兄弟元素
    $("选择器1").siblings("选择器2");//选择器1的其他所有兄弟元素中满足选择器2的兄弟元素
    
    查找子元素
    $("选择器1").find("选择器2");//选择器1中满足选择器2条件的所有子元素对象。和$("选择器1 选择器2");效果一样
    
9.动画相关方法
    show:显示,它是以左上角(0,0)为坐标逐渐变大,直到满足元素的大小
    hide:隐藏,它是以左上角(0,0)为坐标逐渐变小,直到元素消失
    toggle:切换显示或隐藏
    slideDown:显示,像卷闸门关门的样子
    slideUp:隐藏,像卷闸门开门的样子
    slideToggle:切换显示或隐藏
    fadeIn:显示,通过改变透明度的方式实现
    fadeOut:隐藏,通过改变透明度的方式实现
    fadeToggle:切换显示或隐藏
        
    上面所有方法的参数:
        参数1:时间,多少毫秒执行完成,也可以用"slow","normal", "fast"这几个枚举变量表示
        参数2:回调函数,动画执行完毕后才执行
        如果没有参数,则立即显示或隐藏。
        
    animate:自定义动画方法
        参数1:键值对----css属性和值
        参数2:时间
        参数3:回调函数
    比如模拟slideDown、slideUp
    //点击第一个按钮显示div
     $("#btn1").click(function () {
        $("#dv").animate({height:"500px"},5000,function () {
         $(this).css("display","hidden");
        });//滑出
     });
     //点击第二个按钮隐藏div
     $("#btn2").click(function () {
       $("#dv").animate({height:0},5000,function () {
         $(this).css("display","block");
       });//滑入
     });
     
10.页面元素的增删改查
    $("父级元素选择器").append($("子元素对象"));
    $("#dv").append($("<a href='http://www.baidu.com'>百度</a>"));//在父级元素div中追加一个创建后的子元素
    
    $("子元素对象").appendTo($("父级元素选择器"));
    $("<a href='http://www.baidu.com'>百度</a>").appendTo($("#dv"));//创建一个子级元素直接加到父级元素
    
    $("父级元素选择器").prepend($("子元素对象"));
    子元素直接插入到父级元素选择器中第一个子元素的前面
    $("#dv").prepend($("<a href='http://www.baidu.com'>百度</a>"));//在父级元素div中第一个子元素前加一个指定的子元素
    
    $("子元素对象").prependTo($("父级元素选择器"));
    子元素直接插入到父级元素选择器中第一个子元素的前面
    $("<a href='http://www.baidu.com'>百度</a>").prependTo($("#dv"));//在父级元素div中第一个子元素前加一个指定的子元素
    
    $("#dv1>p").appendTo($("#dv2"));//将id为dv1的直接子元素p,剪贴到id为dv2的元素中去
    $("#dv1>p").clone().appendTo($("#dv2"));//将id为dv1的直接子元素p,复制到id为dv2的元素中去
    注意:如果子元素是通过jquery从页面中获取的,用append或appendTo添加到父元素中去时,类似于剪切
    
    $("父级元素选择器").html("子元素的html字符串");
    $("#dv").html("<input type='button' value='按钮'>");
    
    append、appendTo可以多次调用以达到将多个子元素对象依次添加到同一个父元素中
    html不能通过多次调用实现将多个子元素对象添加到同一个父元素中,html方法是将子元素html字符串替换原有父元素的所有子元素。
    
    $("选择器").after($("元素对象"));
    $("#dv").after($("<span>this is span2222</span>"));//把span元素添加到dv选择器的后面让其成为dv选择器的下一个兄弟元素
    
    $("选择器").before($("元素对象"));
    $("#dv").before($("<span>this is span2222</span>"));//把span元素添加到dv选择器的前面让其成为dv选择器的上一个兄弟元素
    
    移除所有的子元素
    $("父级元素选择器").empty();//清空该父级元素选择器下的所有子元素
    $("父级元素选择器").html("");//用空字符串替换父级元素下的所有子元素
    $("父级元素选择器").remove();//删除父级元素及其所有子元素
    
11.自定义属性的操作
    jquery对象.attr(属性名,属性值);//设置某个属性的值
    jquery对象.attr(属性名);//获取某个属性的值
    jquery对象.removeAttr(属性名);//删除某个属性
    
    jquery对象.prop(属性名,属性值);//设置某个属性的值
    jquery对象.prop({属性名,属性值});//设置某个属性的值
    jquery对象.prop(属性名,函数);//设置某个属性的值  函数返回值为属性值 函数参数为:第一个为当前元素的索引值,第二个参数为原先的属性值
    jquery对象.prop(属性名);//获取某个属性的值
    
    
    attr方法主要是操作元素的自定义属性的,但是也可以操作元素的自带的属性,
    但是具有 true 和 false 两个值的属性,如 checked, selected 或者 disabled 使用prop()。因为用attr在属性为false时,可能返回的是undefined
    prop方法只能操作元素自带的属性,包括checked、selected、disabled。
    建议:
        attr方法操作自定义属性,prop操作元素自带属性
        具有 true 和 false 两个值的属性操作用prop,其他的用attr

12.设置元素的高和宽
    方式1:css方法获取和设置
    var w=jquery对象.css("width");//返回的是字符串
    var h=jquery对象.css("height");//返回的是字符串
    jquery对象.css("width",(parseInt(w)*2)+"px");
    jquery对象.css("height",(parseInt(h)*2)+"px");
    
    方式2:width、height方法获取 css方法设置
    var w=jquery对象.width();
    var hj=query对象.height();
    jquery对象.css("width",(w*2));
    jquery对象.css("height",(h*2));
    
    方式3:width、height方法获取和设置
    var w=jquery对象.width();
    var hj=query对象.height();
    jquery对象.width(w*2);
    jquery对象.height(h*2);
    
    建议使用方式3
13.设置元素的偏移
    jquery对象.offset();//获取元素的偏移,返回的是对象,对象包括left和top2个属性
    jquery对象.offset({"left":left值,"top":top值});//设置
    
    
14.绑定事件
    普通的写法
    jquery对象.事件名字(回调函数);//如:$("btn").click(function(){});
    
    bind方式:
    bind(type,[data],fn);
    jquery对象.bind("事件类型",参数,回调函数);//jquery对象.bin("click",function(event){});
    
    delegate方式:
    delegate(selector,[events],[data],fn);
    父级jquery对象.delegate("子级元素选择器","事件类型",回调函数);//父级元素调用方法,代理子级元素绑定事件
    
    on方式:
    on(events,[selector],[data],fn);
    events:一个或多个用空格分隔的事件类型
    selector:子级元素选择器,如果为空或者没有,则表示为父级元素绑定事件
    data:当一个事件被触发时要传递event.data给事件处理函数。
    fn:该事件被触发时执行的函数。

    父级jquery对象.on("事件类型","子级元素选择器",回调函数);//和delegate方法一样,父级元素调用方法,代理子级元素绑定事件
    jquery对象.on("事件类型",回调函数);//为jquery对象绑定事件
    
    前两种方式只能为存在的元素绑定事件,后添加的元素没有事件,而后面两种方式,既可以为存在的元素绑定事件,也让后添加的元素也有事件
    建议:以后直接用on方式绑定事件。

15.解绑事件
    用什么方式绑定事件,最好用对应的方式解绑事件。
    
    unbind解绑事件
    jquery对象.unbind("事件类型");
    如果方法没有参数,表示解绑所有事件;$("#dv").unbind();
    可以同时解绑多个事件,每个事件的名字中间用空格即可。$("#dv").unbind("mouseenter mouseleave");
    jquery对象.click()这种方式添加的事件也可以使用unbind解绑。//$("#dv").unbind("click");
    
    undelegate解绑事件:
    父级jquery对象.undelegate("子级元素选择器","事件类型");
    $("#dv").undelegate();//移除了利用dv代理子级元素绑定的所有事件,但dv自己的事件没有解绑
    $("#dv").undelegate("p","click");//移除的是p的点击事件
    $("#dv").undelegate("p","click mouseenter");//可以移除多个事件,但是每个事件之间用空格隔开
    
    off解绑事件
    父级jquery对象.off("事件类型","子级元素选择器");
    $("#dv").off();//父级元素dv和子级元素的所有的事件全部解绑
    $("#dv").off("click");//把父级元素dv和子级元素的点击事件解绑
    $("#dv").off("click mouseenter");//父级元素dv和子级的元素的多个事件解绑,中间用空格
    $("#dv").off("click","p");//解绑dv中p标签的点击事件
    $("#dv").off("click mouseenter","p");//解绑dv中p标签的两个事件
    $("#dv").off("","p");//解绑dv中p标签的所有的事件
    $("#dv").off("click","**");//解绑dv中所有的子元素的点击事件

16.jquery阻止事件冒泡
    在绑定事件的回调函数中添加return false即可。
    
17.其他
    jquery对象.innerWidth();jquery对象.innerHeight()    //方法返回元素的宽度/高度(包括内边距)。
    jquery对象.outerWidth();jquery对象.outerHeight()  //方法返回元素的宽度/高度(包括内边距和边框)。
    jquery对象.outerWidth(true);jquery对象.outerHeight(true)  //方法返回元素的宽度/高度(包括内边距、边框和外边距)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值