• Jquery-1(基础)


    一、 jQuery 基础

    1.安装jQuery

    • <script src="./dist/jquery-1.12.4.min.js"></script>
    • <script src="./dist/jquery-2.2.4.min.js"></script>

    2.ready 事件(等待DOM就绪)

    • 用法(写多个 不会覆盖)

        $(document).ready(function(){
        })
        //简写(function可写选择器 例:"#box")
        $(function(){
        })
      
    • 与onload的区别

      • onload 事件 等到页面的一切加载完毕,才能触发

      • ready事件等页面中所有的dom加载完毕,就能触发

         <!-- 引入jquery -->
         <script src="jquery-3.2.1.min.js"></script>
         <script>
         	$(document).ready(function(){
         		
         		$(".box").css("width", "300px").css("height", "200px").css("background-color", "#ccc");
         			alert("ready");//后弹出
         	});
        
         	//ready 简写
         	$(function(){
         		$(".box").css("border", "10px solid green");
        
         		alert("ready");
         	});
         	window.onload = function(){
         		alert("onload");//先弹出
         	}
         	
         </script>
        

    3.jquery dom 和 原生js dom(不一样)

    • 通过$() 获取的对象,是jquery dom

    • jquery dom 本质上是由 原生dom 组成的集合,通过取下标就可以获取原生dom

    • $()方法可以把 原生dom 变为 jquery dom $(document)

        <script>	
        	/*对比*/
        	var $dom = $("#box");
        	var dom = document.querySelector("#box");
        	/*判断一下*/
        	if($dom===dom){
        		console.log(true);
        	}else{
        		console.log(false);
        	}
        
        	dom.style.backgroundColor = "red";
      
        	//$dom.style.backgroundColor = "green";错误
      
        	$dom.css("background-color", "green");
        	//dom.css("background-color", "red");错误
      
        	// jquery dom 和 原生dom 可以相互转换
        	//把 jquery dom 变为 原生dom
        	console.log($dom.length);
        	$dom[0].style.border = "2px solid orange";
      
        	// 原生dom 转换为 jquery dom
        	$(dom).css("background-color", "yellow");
        </script>
      

    4.jquery 中绑定事件

    5.jquery连贯操作

    二、jquery 选择器

    1. 基本选择器

    • #ID
    • .className
    • tagName
    • * 通配符
    • selecter1,selecter2...

    2.层级选择器

    • selecter seclter
    • selecter>selecter
    • selecter+selecter 仅后面一个兄弟元素
    • selecter~selecter 后面所有的兄弟元素

    3. 过滤选择器

    • :first (先找:前面的集合,再过滤集合中的第一个)

    • :last

    • :eq(index) 指定某一个(按照顺序找,并不会区分子元素还是孙子元素)

    • :lt(index) 小于索引值index的元素

    • :gt(index) 大于索引值index的元素

        指定某一个
        $("#firstList li:eq(3)").css("border", "3px solid red");
        $("#firstList li:lt(5)").css("border", "3px solid red");
        $("#firstList li:gt(6)").css("border", "3px solid red");
      
    • :odd (数数从0开始)奇数

      • 不需要像JS(数数从1开始)一样nth-of-type(odd);
      • 直接用 例:li:odd
    • :even 偶数

    • :not(selecter) 排除

    • :is(selector)判断是否(true/false)

    • :lang(zh) 任何元素都有该属性(类似CSS3)

      • li:lang(en)匹配:<li lang="en-us/en">小丽丽</li>
    • :header 所有的标题标签(hn)

    • :root 根元素(最外面HTML元素)

    • :target 锚点

        $(document).ready(function(){
        	/*由于时间问题 只写下面的一行没有效果*/
        	$("ul:target").css("border","10px solid green");
      
        })
      
    • :animated 选择正在执行动画的元素(不是执行CSS3动画的元素)

    • :focus 选中获取焦点的元素

        $("input").focus(function(){
        	/*只写下面的一行没有效果*/
        	$("input:focus").css("border", "1px solid red");
        })
      

    4.内容选择器

    • :contains(text) (先找:前面的集合,再过滤)

        $("li:contains('翠翠')").css("border", "1px solid red");
        /*选择内容包含翠翠的li*/
      
    • :empty

    • :parent

        $("li:parent").css("border", "5px solid red");
        /*选择的不是li的父元素,选择有子元素的或者有文本内容的li*/
      
    • :has(seelcter)(内容选择器)

        $("li:has(.item)").css("border", "5px solid red");
        /*选择包含子元素.item的li*/
      

    5. 可见性选择器

    • :hidden
    • :visible 选择所有的元素

    6.属性选择器

    • [attrName]
    • [attrName=value]
    • [attrName!=value]
    • [attrName^=value]
    • [attrName$=value]
    • [attrName*=value]
    • [attrSel1][attrSel2][attrSelN]

    7. 子元素选择器

    • :first-child 所有兄弟里的第一个
    • :last-child
    • :nth-child(index)
    • :nth-last-child(index)
    • :only-child
    • :first-of-type
    • :last-of-type 从后往前数
    • :nth-of-type(index)
    • :nth-last-of-type(index)
    • :only-of-type

    8.表单选择器

    • :input 所有的表单控件(inputselect extarea)
      • 不是选择所有的input元素,还包括其他表单控件
    • :text 选择type等于text的
    • :radio 选择type等于radio的
    • :checkbox
    • :password
    • :image
    • :submit 选择type等于submit、button 的
    • :reset
    • :button 选择type等于button的
    • :file

    9. 表单对象选择器

    • :disabled 不能用的控件
    • :enabled 所有能用的表单控件
    • :checked
    • :selected

    三、 筛选(JQ DOM的一些方法

    返回值都是JQ DOM 一个方法调用完了之后可以接着调用另一个

    1.过滤(在:满足条件下,再查找)

    • .eq(index|-index)

    • .first() 取第一个

        $("li").first().css("border", "5px solid red");
      
    • .last()

    • not(expr|ele|fn)

        $("li").not(".item").css("border", "5px solid red");
      
    • filter(expr|obj|ele|fn) 选择满足条件的

        $("li").filter(".item").css("border", "5px solid red");
      
    • is(expr|obj|ele|fn) true/false

    • has(selecter)

        $("li").has(".item").css("border", "5px solid red");
      
    • slice(start,[end]) 从集合中截取一部分

        $("li").slice(2,6).css("border", "5px solid red");
        /*选择第2~6的元素(不包含6)*/
      
    • is(selecter) 返回值是 true/false

        $("li").click(function(){
        	 //alert($(this).is('.item')) 
        	 //alert($(this).is(':first-child')) 
        	 alert($(this).hasClass('item'))
        })
      
    • hasClass(className) 返回值是/true/false

    • map(fn) map(callback)所有的遍历了一遍

        var arr  = $("li").map(function(index, item){
        	return item.innerHTML;
        });
        console.log(arr);
      

    2. 查找(找亲戚)

    • find(selcter) 后代元素find(e|o|e)

        $("#myList").find("li").css("border", "1px solid red");
      
    • children(selcter) 子元素children([expr])参数可以为空

        $("#myList").children("li").css("border", "1px solid red");
        /*选择其中一个 用eq*/
        $("#myList").children("li").eq(1).css("border", "1px solid red");
      
    • parent() 父元素parent([selector])

        $(".item").parent().css("border", "5px solid red");
      
    • parents(selcter) 所有的祖先元素parents([expr])可以传参数过滤一下

        $(".item").parents("ul").css("border", "5px solid green");
      
    • parentsUntil(selecter) 所有祖先元素,直到传的参数那里parentsUntil([e|e][,f])

        $(".item").parentsUntil("body").css("border", "5px solid blue");
        /*向上找所有的祖先元素,直到body*/
      
    • offsetParent()

    • closest(selecter) 从自身和祖先元素中向上 找到第一个满足条件closest(e|o|e)1.7*

        $(".item").closest("li").css("border", "5px solid red");
        /*找最近的*/
      
    • next() 紧跟在后面的一个兄弟元素next([expr])

    • nextAll() 跟在后面的所有兄弟元素nextAll([expr])

        $(".item").nextAll().css("border", "5px solid red");
      
    • nextUntil() 跟在后面的所有兄弟元素,直到传的条件那里 nextUntil([e|e][,f])

        $(".item").nextUntil("p").css("border", "5px solid red");
      
    • prev() 紧跟在前面的一个兄弟元素prev([expr])

    • prevAll() 跟在前面的所有兄弟元素prevall([expr])

    • prevUntil() 跟在前面的所有兄弟元素,直到传的条件那里prevUntil([e|e][,f])

    • siblings() 所有(前面和后面)的兄弟元素(不包含自己) siblings([expr])

        $(".item").siblings("li").css("border", "1px solid red");
      

    3.串联

    • add(expr|ele|html|obj[,con]) 1.9*
      • 把选中的元素加入到当前集合
      • 把与表达式匹配的元素添加到JQ对象中
      • $("li").add("p").css("background-color", "orange");
    • andSelf() 被abbBack()代替 1.8-
      • 添加堆栈中元素集合到当前集合,一个选择性的过滤选择器(紧挨着的一个)
      • $("ul").find("li").addBack().css("border", "5px solid red");ul也会选中
    • addBack() 1.9+
      • 把最近的堆栈中元素加入当前集合
    • contents() 返回所有子节点的集合(不是JQ DOM)
    • end()
      • 返回最近的一个破坏性操作之前的元素。即,将匹配的元素列表变为前一次的状态
      • $("ul").find("li").end().css("border", "5px solid red");只选中ul

    四、属性

    1. 属性操作的方法

    • prop(attr [,val]) 只能操作内置(自带的)属性

        //获取 某个属性的值(一个参数)
        console.log($("img").prop('src'));//处理后的地址http://...
        console.log($("img").prop('width'));
        //修改、添加某个属性值(两个参数)
        $("img").prop("title", "哈哈哈");
        $("img").prop("alt", "哈哈哈");
      
    • attr(attr [,va]) 操作自定义属性(也可以操作内置属性、存在的)

        //获取自定义属性的值(一个参数)
        console.log($("img").attr("loadpic"));
        console.log($("img").attr("src"));//写的什么地址就是什么地址
        //修改 不存在的 会自动添加(两个参数)
        $("img").attr("dddd", "dds");
      
    • removeAttr(attr) 移除属性

        $("img").removeAttr("dddd");/*任何属性都可移除*/
        $("img").removeProp("alt");/*移除由Prop设置的 有错误(建议不用)*/
      

    2.class操作

    • addClass() 添加一个类

    • removeClass() 移除一个类

    • toggleClass() 切换

    • hasClass() 判断一个类

        // class 操作(不影响原先就有的类)
        $("img").click(function(){
        	/*if ($(this).hasClass("current")) {
        		$(this).removeClass("current");
        	} else {
        		$(this).addClass("current");
        	}*/
        		$(this).toggleClass("current");
        	});
      

    3.HTML代码/文本/值(方法)

    • html([val])

    • text([val])

    • val([val])

        //获取 div内的 html内容(包含其中的标签)(不写参数)
        console.log($(".content").html());
      
        //修改html内容(写参数)
        //$(".content").html("<p>啊啊啊</p>")
      
        //获取 文本内容(仅仅包含文本内容)(不写参数)
        console.log($(".content").text());
        		
        //设置文本内容 原样输出(写参数)
        //$(".content").text("<h1>锄禾日当午</h1>")
      
        //获取表单内容
        $("#btn1").click(function(){
        	//alert($("#name")[0].value())
        	$("#name").val("请输入用户名");
        })
      

    五、CSS

    1.css方法

    • css() 返回值是String

        /*获取(元素中的第一个)*/
        console.log($(".my-list").css('width'));
        /*设置*/
        $("p").css("border","1px solid red").css("padding", "20px");
        /*同时设置 对象{,,}*/
        $(".my-list li").css({
        		"border":"2px solid green",
        		"padding":"20px",
        		"margin-bottom":"10px"
        	})
      
    • 逐渐增加div的大小

        <script>
        $("div").click(function(){
        	$(this).css({
        		function(index,value){
        			return parseFloat(value)*1.2;
        		},
        		height:function(index,value){
        			return parseFloat(value)*1.2;
        		}
        	});
        });
      

    2.位置

    • offset() 当前视口的相对偏移(可以设置)

      • 返回的对象包含两个整型属性:top和left
      • 单独获取.offset().top/left
      • 此方法只对可见元素有效
    • postion() 相对父元素的偏移(只读的,不能设置)

        /*获取偏移*/
        $("#btn1").click(function(){
        	console.log($(".my-list li").eq(2).offset())
        	console.log($(".my-list li").eq(1).position())
        });
      
        /*设置偏移 参数(对象)*/
        $("#btn2").click(function(){
        	$(".my-list li").eq(2).offset({
        		left:100,
        		top:89
        	});
        });
      
    • scrollLeft([val])

        /*相对滚动条左边的偏移*/
        $("#btn3").click(function(){
        	console.log($(".box").scrollLeft());
        });
        /*设置点击 内容向左滚动*/
        $("#btn4").click(function(){
        	$(".box").scrollLeft($(".box").scrollLeft()+100)
        })
      
    • scrollTop([val])

      • 匹配元素相对滚动条顶部的偏移
      • 此方法对可见和隐藏元素均有效

    3.尺寸

    • width() / height()

        /**
         *以10像素的幅度增加p元素的高度
         *参数描述function(index,height)
        */
        $("button").click(function(){
        	$("p").height(function(n,c){
        		return c+10;
        	});
        });
      
    • innerWidth() / innerHeight()

      • 获取内部区域的宽度和高度(包括补白、不包括边框)
      • 此方法对可见和隐藏元素均有效
    • outerWidth() / outerHeight()参数设置为true时,计算边距在内

        console.log($(".box").outerWidth(), $(".box").outerHeight());
        /*设置尺寸*/
        $("#btn5").click(function(){
        	//$(".box").width(500);
        	$(".box").outerWidth(500);
        })
      

    六、文档处理(添加、删除元素)DOM操作

    1.内部插入

    • append(content|fn) (父元素来调用)添加到父元素 后面插入

        //添加
        $("#btn01").click(function(){
        	//创建一个元素$("<img>")
        	//var newImg = $("<img>").prop("src", "../../dist/images/002.jpg");
        	//$(".box").append(newImg);
        	$(".box").append("<img src='../../dist/images/002.jpg'>");
        })
      
    • appendTo(content) (子元素来调用)添加到父元素 后面插入

        $("#btn02").click(function(){
        		$("<img src='../../dist/images/003.jpg'>").appendTo(".box");
        	});
      
    • prepend(content|fn) (父元素来调用)添加到父元素 前面插入

        $("#btn03").click(function(){
        		$(".box").prepend("<img src='../../dist/images/002.jpg'>");
        	});
      
    • prependTo(content) (子元素来调用)添加到父元素 前面插入

    2.外部插入(插入到外面去了,成为兄弟元素)

    • after(content|fn) 后插

        $("#btn04").click(function(){
        		$(".box").after("<img src='../../dist/images/002.jpg'>");
        	});
      
    • insertAfter(content) 后插(新元素调用)

        $("#btn05").click(function(){
        		$("<img src='../../dist/images/002.jpg'>").insertAfter(".box");
        	});
      
    • before(content|fn)

        $("#btn06").click(function(){
        		$(".box").before("<img src='../../dist/images/002.jpg'>");
        	});
      
    • insertBefore(content)

    3.包裹(元素的外面再包一层元素)

    • wrap(html|ele|fn) 每个元素都包裹一个新的元素

    • wrapAll(html|ele) 所有元素包裹一个新的元素

    • wrapInner(html|ele|fn) 在里面包裹一个

      • img是单标签,调用wrapInner没意义
    • unwrap() 不需要参数(删除添加的wrap,也能删除包裹在外面的父元素)

        $("#btn07").click(function(){
        		$(".box img").wrap("<li>");
        	})
        	$("#btn08").click(function(){
        		$(".box img").wrapAll("<li>");
        	});
      
        	$("#btn09").click(function(){
        		$(".box").wrapInner("<li>");
        	})
        	$("#btn10").click(function(){
        		$(".box img").unwrap();
        	});
      

    4.替换

    • replaceWith(content|fn) 旧的元素调用,参数是新的

    • replaceAll(selector) 新的元素调用,参数是旧的

        	$("#btn11").click(function(){
        		$(".box img.current").replaceWith("<img src='../../dist/images/003.jpg'>")
        	});
      
        	$("#btn12").click(function(){
        		$("<img src='../../dist/images/002.jpg'>").replaceAll(".box img.current");
        	})
      

    5.删除元素

    • empty() 清空(子元素),没有参数

    • remove([expr]) 删除(自己),想删谁就谁调用

    • detach([expr]) 删除(自己),

        	$("#btn13").click(function(){
        		$(".box").empty();
        	});
        	$("#btn14").click(function(){
        		$("img.current").remove();
        	})
      

    6.克隆

    • clone([Even[,deepEven]])不光克隆自己,子元素也克隆

        	$(".box").clone().appendTo(document.body)
      

    七、事件

    1.页面载入

    • ready(fn)

    2.事件绑定方式(事件处理)

    • 事件(fn)

        $(".box").dblclick(function(){
        	console.log("啊,我被双击了");
        });
      
    • bind("事件名", fn) 指定对象 同时绑定多个事件bind(type,[data],fn)

        $(".box").bind("click", function(){
        	console.log("啊,我被单机了");
        });
      
    • on("事件", fn) on(eve,[sel],[data],fn) 1.7+

        $(".box").on("mouseover", function(){
        	$(this).css("background", "red");
        });
      
    • off(eve,[sel],[fn]) 1.7+

    • one("事件", fn) 只能绑定一次

        $(".box").one("mouseout", function(){
        	/*可以设置为空 恢复原来的样式*/
        	$(this).css("background", "");
        });
      
    • 同时绑定多个事件(bind)

        $(".content").bind({
        	mouseover:function(){
        		$(this).css("background", "green");
        	},
        	mouseout:function(){
        		$(this).css("background", "red");
        	},
        	mousemove:function(){
        		console.log("OK");
        	}
        })
      

    3.事件解除绑定

    • unbind(t,[d|f])

    • off()

        $("#btn").click(function(){
        	/*解除多个*/
        	$(".box").unbind("click").unbind("mouseout");
        	/*解除所有绑定(不写参数)*/
        	$(".box").unbind();
        	$(".box").off();
        })
      

    4.事件委派(新添加的元素也有效果)

    • live(type,[data],fn) 1.7-(取消了不用)

    • die(type,[fn]) 1.7-(取消了不用)

    • on(事件, 选择器, fn) 选择器是调用on的集合的子元素

        /*解决,新添加的元素也有效果*/
        $(".my-list").on("mouseover", "li", function(){
        	$(this).css("background", "orange");
      
        }).on("mouseout", "li", function(){
        	$(this).css("background", "");
      
        })
      
    • delegate(选择器, 事件, fn) 跟上面的(on)顺序不一样,用法类似

        $(".my-list").delegate("li", "click", function(){
        		$(this).css("border-color", "red");
        	});
      
    • undelegate(选择器) 事件绑定解除undelegate([s,[t],fn])

        $(".my-list").undelegate("li");
      

    5.自动触发事件

    • trigger(type,[data])

        $(".my-list li").trigger("mouseover");
      
    • triggerHandler(type, [data])

        $(".my-list li").triggerHandler("dblclick");
      
    • 两者的区别:

      • triggerHandler(type, [data])
        • 只触发Jquery对象集合中第一个元素的事件处理函数
        • 委派上的事件不可触发
        • 可以触发元素的自带动作(超链接a)
      • trigger(type,[data])
        • 集合中全部都触发
        • 委派上的事件也可触发
        • 可以触发元素的自带动作(超链接a)

    6.jQuery 事件(切换)

    • hover([over,]out) 把mouseover和mouseout合在一起了

    • toggle([spe],[eas],[fn]) 1.9-

        $(function(){
        	$(".my-list li").hover(function(){
        		$(this).toggleClass("current");
        	});
        })
      

    7.事件

    • blur([[data],fn])
    • change([[data],fn])
    • click([[data],fn])
    • dblclick([[data],fn])
    • error([[data],fn])
    • focus([[data],fn])
    • focusin([data],fn) 获取焦点 绑定给input父元素的
    • focusout([data],fn) 失去焦点 绑定给input父元素的
    • keydown([[data],fn])
    • keypress([[data],fn])
    • keyup([[data],fn])
    • mousedown([[data],fn])
    • mouseenter([[data],fn])
    • mouseleave([[data],fn])
    • mousemove([[data],fn])
    • mouseout([[data],fn])
    • mouseover([[data],fn])
    • mouseup([[data],fn])
    • resize([[data],fn])
    • scroll([[data],fn])
    • select([[data],fn])
    • submit([[data],fn])
    • unload([[data],fn])
    • focusin
    • focusout

    八、事件对象

    • eve.currentTarget
    • eve.data
    • eve.delegateTarget1.7+
    • eve.isDefaultPrevented()
    • eve.isImmediatePropag...()
    • eve.isPropagationStopped()
    • eve.namespace
    • eve.pageX
    • eve.pageY
    • eve.preventDefault()
    • eve.relatedTarget
    • eve.result
    • eve.stopImmediatePro...()
    • eve.stopPropagation()
    • eve.target
    • eve.timeStamp
    • eve.type
    • eve.which

    九、效果

    1.基本

    • show()
    • hide()
    • toggle()

    2.滑动

    • slideDown()
    • slideUp()
    • slideToggle()

    3.淡入淡出

    • fadeIn()
    • fadeOut()
    • fadeToggle()
    • fadeTo()

    4.自定义

    • animate()
    • stop()
    • delay()
    • finish()

    5.设置

    • jQuery.fx.off

      • 设置为true 关闭所有动画
    • jQuery.fx.interval

      • 设置动画的显示帧速。默认值是 13 毫秒。该属性常用于修改动画运行的每秒帧数

    十、工具

    1.浏览器特性检测

    • $.support

    2.数组和对象操作

    • $.each(object,[callback]) 遍历数组 对象
    • $.extend([d],tgt,obj1,[objN]) 合并对象 合并到第一个参数
    • $.grep(array,fn,[invert]) 过滤数组
    • $.makeArray(obj) 把类数组对象变为数组
    • $.map(arr|obj,callback) 操作数组的每一单元
    • $.inArray(val,arr,[from]) 判断值是否在数组中
    • $.merge(first,second) 合并数组
    • $.unique(array) 去重
    • $.parseJSON(json) 解析json
    • $.parseXML(data) 解析xml

    3.函数操作

    • $.noop 空方法
    • $.proxy(function,context) 改变方法的作用域

    4.测试操作

    • $.contains(c,c) 判断一个元素是否是另一个元素的后代吗元素
    • $.type(obj) 判断类型
    • $.isarray(obj) 是否为数组
    • $.isFunction(obj) 是否是function
    • $.isEmptyObject(obj) 是否为空对象
    • $.isPlainObject(obj) 是否为纯粹的对象
    • $.isWindow(obj) 是否是window对象
    • $.isNumeric(value)1.7+ 是否是number

    5.字符串操作

    • $.trim(str) 去除左右两边的空格

    6.序列化

    • $.param(obj,[traditional]) 把对象或数组 转为 特殊格式的字符串

    7.其他

    • $.error(message) 抛出错误
    • $.fn.jquery 返回jqueyr版本

    十一、核心

    1.核心函数

    • jQuery([sel,[context]])
    • jQuery(html,[ownerDoc])1.8*
    • jQuery(callback)

    2.jquery对象访问

    • each(callback) 遍历jquery dom
    • size() 返回dom集合中的个数 同length
    • length 同上
    • selector 返回选择器
    • context 返回原生js dom
    • get([index]) 获取dom集合中一个
    • index([selector|element]) 索引值
    • toArray() 转为纯数组

    3.数据缓存

    • data([key],[value])
    • removeData([name|list])1.7*

    4.队列

    十二、插件

    1.自定义插件

    • jQuery.extend() 扩展jQuery对象本身。
    • jQuery.fn.extend() 扩展 jQuery 元素集来提供新的方法(通常用来制作插件)。
  • 相关阅读:
    leetcode—Swap Nodes in Pairs
    leetcode--Merge k Sorted Lists
    leetcode—Valid Parentheses
    leetcode—3sum
    编程工具(保持更新)
    QT下调用摄像头(opencv2.4.4)
    qtcreator 与 opencv
    在线公式编辑器
    QT学习(对话框)codeblock版本
    QT-opencv小结
  • 原文地址:https://www.cnblogs.com/1666818961-lxj/p/7495907.html
Copyright © 2020-2023  润新知