jq

1.选择器获取元素
$("")//里面放字符串--选择器

//1.基本
$(".item");//类名
$("div");//标签选择
$("#item")//id名
$("*")//所有标签

//2.层级
$(".item p")//后代选择器
$("label+input");//紧跟label的input
$("label~input");//兄弟//与label同辈的input
$(".item>p");//子代//(类名为item的所有是p标签的子级)

//3.基本筛选
$("p:first");//所有匹配标签的第一个
$("p:last");//所有匹配元素的最后一个
console.log($("p:not(':nth-child(1)')"));//不是所选的p
$(":root").css("color","red");//选择该文档的根元素

$("p:even");//索引值为偶数的元素
$("p:odd");//索引值为奇数的元素
$("p:gt(0)");//索引值大于所给的下标的
$("p:lt(10)");//索引值小于所给的下标值的

$(":header");//匹配所有h标签
// $(":header:nth-child(1)").css("color","green");

// $(":animation");//匹配所有正在执行动画的
//结合回调
// $(".btn").click(function(){
//  $(".item:not(:animation)").animation({ left: "+=20"},100)
// })


//4.内容
$("div:contains('文本')").css("color","green");//选择文本内容是“文本”的标签
$("div:empty");//匹配空元素(不包含文本和标签)
$("div:has(p)");//所有包含p的div
$("div:parent");//查找所有含有子元素或文本的div

// 5.可见性
$("div:hidden");//匹配所有隐藏的div
$("div:visible");//匹配所有可见的div


// 6.属性 
$("div[class]");//找所有含有class属性的div
$("div[type='text']")//找所有typem的元素(用于找特定元素)
$("div[class!='item']")//找所有类名不是item的div
$("div[class^='tit']")//找所有属性是以tit开头的
$("div[class$='tle']")//找所有类名以tle结尾的元素
$("div[class*='it']")//所有包含 类名it的
$("div[class][id='item']")//有多个属性的(还可以规定特定属性名)

// 7.子元素
$("span:first-child").css("color","lightblue");//找子级span是第一个的(查询包含其他标签)
$("p:last-child").css("color","lightgreen");//找是最后一个子元素的p(查询包含其他标签)
$(".item:first-of-type")//??


// 8.表单
$(":input");//所有input--text,button image/submit/reset/radio/checkbox/file
$(":text");

// 表单对象属性
$("input:enabled");//所有禁用的表单
$("input:disabled");//没有被禁用
$("input:checked");//所有选中的
$("select option:selected");//所有选择的复选框

2.原生对象与jq对象之间的转化

注意:
(1)通过jq获取的是jq对象,通过元素的document.getElement获取的是原生对象
(2)原生对象不能调用jq对象的方法,同理Jq也对象不能调用原生的方法和属性

// 1.jq对象与原生对象的转化

// 原生转jq
var content =document.getElementsByClassName("content");
$(content).css("color","pink");

// jq转原生
$(".content")[0].innerHTML="jq转原生1";
$(".content").get(1).innerHTML="jq转原生2";


// 2.创建元素
$("<div style='color:gray'>我是创建的div</div>").append("</br><span>我是创建div中的span</span>").appendTo("body")

3.css样式

(1)获取css样式:  .css()    
 var color = $(".content").css("backgroundColor");
 console.log(color);

(2)设置css样式
  $("p").css("color","blue");   // (单个样式)
  $("p").css({
    color:"gold",
    border:"1px solid red"
})(多个样式)

 (3):结合回掉函数,获取的元素有几个,函数就会执行几次,传入下标和老的值

    var Arr =["red","green","blue","yellow"];
    $("p").css("color",function(index,oldValue){
          return Arr[index];
    })
    $("p").css({
          width:function(index,oldValue){
                return 100*(index+1);
          },
          height:function(index,oldValue){
               return 50;
          },
         fontSize:function(index,oldValue){
              return 35;
         }
    });

  (4)位置:offet/position/scrollTop
    // offset:在当前视口的相对偏移
       console.log($(".offset").position());//{top: 100, left: 250}
     
    // position():相对于父元素的top,left值
       console.log($(".offset").position());//{top: 100, left: 250}

    // scrollTop() 获取匹配元素相对滚动条顶部的偏移。
       $(".offset").scrollTop(300)
       $(".offset").scrollTop()

  (5)尺寸(全纯数字) 

    // 尺寸hieght/width/innerHeight/innerWidth/outHeight/outWidth
    // 获取样式 $(".offset").height();
    // 设置样式:$(".offset").height(加参数)
    $(".div").height();
    $(".div").width();
    $(".div").innerWidth();//获取第一个匹配元素内部区域宽度(包括补白、不包括边框)
    $(".div").innerHeight();//获取第一个匹配元素内部区域高度(包括补白、不包括边框)
    $(".div").outerHeight();//获取第一个匹配元素内部区域高度(包括补白边框)
    $(".div").outerWidth();//获取第一个匹配元素内部区域宽度(包括补白边框)

4.文档处理

// 创建元素、添加元素
// 1.内部插入
// a.append(b) :把b插入a的最后面
// a.appendTo(b):把a插入b的最后
// a.prepend(b):把b插入a的前面
// a.prependTo(b):把a插入到b的最前

$("<p class='item2' style='color:lightgreen'></p>").append("<span>spqn</span>").appendTo("body");


// 2.外部插入 after/insertAfter
// a.after(b)//把b插入到a的后面
// a.insertAfter(b);//把a插入到b后
// a.before(b);//把b插入到a的前面
// a.insertBefore(b);//把a插入到b的前面

$(".content").after($("p"));//content后面插入所有的p
$(".fool").insertAfter(".content");//把fool插入到.content之后


3.包裹 

 (1)wrap();在集合中匹配的每个元素周围包裹一个HTML结构。
$("form").wrap("<div class='BG'></div>");//用div包裹form

// wrap回调函数返回值, 当参数是函数的时候,jq会把函数的返回值作为包裹form的父级来使用
// 需求:用内容为显示的div包裹form
    $("form").wrap(function(){
    var divs = document.getElementsByTagName("div");
    for(var i=0;i<divs.length;i++){
        if(divs[i].innerHTML=="显示"){
            return divs[i];
         }
      }
    });

 (2)unwrap:去掉父级 ,
   $(".content").unwrap();

 (3)wrapAll: 把所有的匹配元素用一个父级包裹,第一个匹配元素在哪,加的父级就在哪
    $("p").wrapAll(".item2");

 (4)wrapInner: 给匹配元素的内容(整个内容,包括文本)加
$("p").wrapInner("<b></b>");


4.删除remove() / deatch()
//empty():就是把子节点全部删除为空(包括文本和标签)
// a.remove()  删除所有,删除后再添加回去,不能使用前面所绑定的事件或属性
// a.deatch()  删除所有,删除后再添加回去,能使用前面所绑定的事件或属性(会保留)
// $(".content").remove();//删除
// $(".content").remove("#con")//参数代表选择器筛选的元素


  5.替换
// a.replaceWith(b):把a元素替换成b
//a.replaceAll(b):用所有的a替换掉b
$("p").replaceWith("<b>我是b标签</b>");//把所有的p替换成b
$("p").replaceAll(".content");//用所有的p替换掉.content

6.事件

(1)ready:当DOM准备就绪时,指定一个函数来执行。
// 文档加载完毕和window.onload类似,都是文档加载完毕之后执行,
   不同点在于document.ready可以绑定多个事件

 $(document).ready(function(){
    console.log("文档加载完毕1");
 });
 $(document).ready(function(){
    console.log("文档加载完毕2");
 });
 //简化版,最常用
 $(function(){
    console.log("文档加载完毕3");
 });
  
(2)事件绑定
 1. on绑定事件,四个参数
    // div.on(type,"selector",obj,fn)
    // type:字符串类型 ,放的是事件类型入:clcik
    // selector:字符串类型。是选择器,代表过滤,只有这个选择器内的元素才能触发事件
    // obj:对象类型
    // fn函数,事件触发之后执行的函数

    //绑定写法:
    $(".p")on("click",function(){})
    $("div p:first-child:first").on("click","span",{name:"明月",age:17},function(ev){
                // console.log("点击了p标签");//第二个参数给类选择器
                console.log(ev.data);//{name: "明月", age: 17}
    });

2.解绑off
    // div.off()所有时间都移出
    // div.off("click")移除所有点击事件
    // div.off("click",fn)//移除指定的点击事件
    // $("div p:first-child:first").off("click",fn)

3..one():绑定一次事件执行后就不会执行了,只能点一次

4. bind():方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。
    $("input[type=text]").click(function(){
          $("p").slideToggle();
    })

5.unbind():移除事件
    $("#btn").click(function(){
        $("input[type=text]").unbind();//input的点击事件被取消
    })

6. blur():输入框失焦时触发
    $("input").blur(function(){
        $(this).css("backgroundColor","red");
    })

7.focus:获得焦点
    $("input[type=text]").focus(function(){
        console.log("输入框获得焦点")
    })

8.change():当输入域发生变化时:
    $("input[type=text]").change(function(){
     // input值改变,触发change事件
        $(this).css("backgroundColor","lightgreen")
})

9. dblclick双击
     $(".item").click(function(){
        $(this).css("color","lightgreen")
      })

10.delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
     $(".item").delegate("p","click",function(){
        $("img").slideToggle();
});

11.undelegate():从匹配元素移除一个被添加的事件处理器,现在或将来 
    // 取消.item的事件
    $(".p4").click(function(){
         console.log(1)
         $(".item").undelegate();
    })


12. resize():窗口改变大小时触发
     $(window).resize(function(){
          console.log("窗口发生变化")
      })

13. scroll():窗口滑动时触发事件
    $(window).scroll(function(){
          console.log("滚动");
     })
  
14. trigger():方法触发被选元素的指定事件类型。事件触发后文本会被选中
    $(".p3").select(function(){
          $(".p3").after("文本被选中!");
    });
    $("#btn").click(function(){
          $(".p3").trigger("select");
    });


15. triggerHandler()第一个被匹配元素的指定事件:与tigger的区别,事件触发后文本不会被选中

7.事件对象

1. 鼠标位置:pageX(相对于文档的左边缘),pageY 包含滑动距离
$(document).mousemove(function(e){
    $("span").text("X:"+e.pageX+","+"Y:"+e.pageY)
})

2. 阻止默认事件
event.preventDefault();

3. event.result() 包含由被指定事件触发的事件处理器返回的最后一个值。
$("#btn").click(function(e) {
    return ("最后一次点击的鼠标位置是: X" +e.pageX + ", Y" + e.pageY);
});
$("#btn").click(function(e) {
     $(".p3").html(e.result);
});  

4. event.target:指哪个元素触发了事件
$("p, #btn").click(function(event){
    $(".p3").html("Triggered by a " + event.target.nodeName + " element.");
});

5. event.timeStamp 该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。

6. event.type:表示事件的类型

7. 键盘事件对象 keydown/keypress/keyup
.event.which:显示按下了哪个键

7.移交$的使用权
正常情况下$代表jQuery。如果和其他变量名有冲突,JQ可以把$的使用权交出去。

// console.log(jQuery(".content")) // jqery=$
// 移交$的使用权,
// 调用此方法后,不能继续使用$来代表JQ。
// 用变量接接收返回值之后。这个变量就代表JQ
// var $$=$.noConflict();
// $$(".content").css("color","red");

8.常用工具
数组和对象操作

.each():遍历对象,回调函数返回index,obj

  $.each(["hello","world"],function(index,el){
        console.log(index,el);
        //打印 0 hello /1 world
  })

  $("p").each(function(index,obj){
         $(this).click(function(){
                console.log(index,obj);//点击打印各p标签的下标和点击的p标签
         })
   })

$(each)的回调函数每次返回数组的下标index,和数组的值obj

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容