jquery
[TOC]
$符号的释放
e.g. var nj=jQuery.noConflict();
用nj代替$
$(function(){
…
})
nj(function(){
…
})
$(); jQ核心函数
1.接受函数 $(function(){});
作为入口函数
2.接受一个字符串代码片段 $(“.box1”);
返回一个jQ对象,对象中保存了找到的DOM元素
3.接受一个字符串代码 $(“
我是段落
“);
返回一个jQ对象,对象中保存了创建的DOM元素
4.接受DOM元素 $(“div”);
会被包装成一个jQuery对象返回
each方法 可以遍历伪数组
$.each(arr, function(index,value){
console.log(index,value);
})
注意:和Js的参数位置刚好相反 索引在前,值再后
map方法
$.map(obj, function(value,index){
conlose.log(index,value);
return value+index;
})
两者区别:
each静态方法默认的返回值:当前遍历的数组
map静态方法默认的返回值是一个空的数组
each数组不支持在回调函数中对遍历的数组进行处理
map可以在回调函数中通过对return对遍历的数组进行处理,输出我们想要的值,然后生成一个数组返回出来
trim方法
var res = $.trim(str); 可以删除字符串两端的空格
不会改变原字符串 需要接受新产生的字符串
isWindow方法
作用:判断传入的对象是否是window
参数:需要判断的对象
返回值:true/false
var res = $.isWindow();
isArray方法
作用:判断传入对象是否是真数组 伪数组是false
参数:需要判断的对象
返回值:true/false
var res = $.isArray();
isFunction
同上
!! var res = $.isFunction(jQuery); => true
所以jq框架本质是一个函数
holdReady
{所有dom元素执行完之后会执行ready函数}
$.holdReady(true);
作用:暂停ready事件(入口函数)执行
$.holdReady(false);
作用:恢复ready事件
内容选择器
:empty
var $div = $(“div:empty”);//找出没有子元素也没有文本内容的div;
console.log($div);
:parent
var $div = $(“div:parent);//找到有元素或者有子元素的div
:contains(text)
var $div = $(“div:contains(‘我是div’)”);
首先找到所有的div 查看哪个div中含有‘我是div’的文本。是包含不是等于噢!
:has(selector)
var $div = $(“div:has(‘span’)”);
首先找到所有的div 找到包含指定子元素的div。是包含不是等于噢!
操作属性节点
1.attr()
作用:获取或者设置属性节点的值,新增属性节点
传递一个参数:获取该指定节点的值 => !!注意,无论找到多少个元素,都只会返回第一个元素指定的属性节点的值
传递两个参数:设置该属性节点的值 => !!找到多少个元素就会设置多少个元素
$(“span”).attr(“class”,”box”)
//如果传入的属性节点不存在则自动创建新的属性节点并赋值
获取返回值:该属性节点的内容,没有内容是undefin ed
2.removeAttr();
作用:删除属性节点
找到多少个元素就会删除多少个元素的指定属性节点
删除多个属性节点:(用空格隔开即可)
$(“span”).removeAttr
(“class name abc”);
同时删除class、name、abc三个属性节点
操作属性
1.prop
$(“span”).eq(0).prop(“demo”,”666”)
给找到的第一个span添加上demo属性
获取的时候和attr()一样一个参数而且只能返回第一个
!! prop不仅能操作属性也能操作属性节点
$(“span”).prop(“class”) =>也可以实现效果
获取返回值:true/false
2.removeProp
Css操作
1.addClass()
$(“div”).addClass(“class1 class2”);//可以同时添加两个类名
2.removeClass()
$(“div”).removeClass(“class1 class2”)//同时删除多个类名
3.toggleClass()
切换类名 有就删除 没有就添加
$(“div”).toggleClass(“class1 class2”)
我感觉这个可以做点一下有点两下没有循环这样子的东西
HTML操作
1.html()
$(“div”).html(“
我是段落我是span
“);//可以创建html节点设置html 和innerHTML作用一样
2.console.log($(“div”).html());
获取html的值
3.text()
$(“div”).text(“
我是段落我是span
“)//只传入文本无法设置HTML节点4.console.log($(“div”).text());
获取HTML的值
5.val()
$(“input”).val(“请输入内容”)
设置输入框内的值
6.console.log($(“input”).val());
获取输入框里面的内容
操作样式
1.逐个设置
$(“div”).css(“width”,”100px”);
$(“div”).css(“height”,”100px”);
$(“div”).css(“background”,”red”);
2.链式设置(不建议太长 阅读性差
$(“div”).css(“width”,”100px”).css(“height”,”100px”).css(“background”,”red”);
3.批量设置
$(“div”).css({
width:”100px”;
height:”100px”;
});
获取CSS样式值
$(“div”).css(“width”);
尺寸操作
1.获取元素宽度
$(“.father”).width();
2.设置元素宽度
$(“.father”).width(“500px”);
3.innerheight和outerheight的区别
innerheight = height +padding;
outerheight = height +padding + border +一定情况下的margin;
位置操作
1.offset()
作用:获取和设置元素距离窗口的偏移位
$(“.son”).offset().left() =>获取
$(“.son”).offset(
{
left:10
}
) =>设置
2.position()
作用:获取元素距离定位元素的偏移位 !!不能设置噢~ 想设置距离的话直接在JQ里面写CSS就可以了
$(“.son”).position().left() =>获取
滚动条
1.scrollTop()
$(“.box”).scrollTop() =>获取元素滚动条现在滚动的距离
$(“html”).scrollTop()+$(“body”).sbodycrollTop() =>获取网页滚动的距离 实现浏览器之间的兼容
$(“.box”).scrollTop(300) =>设置滚动条滚动的距离
$(“html,body”).scrollTop(300) =>设置网页的滚动距离 实现浏览器之间的兼容
1 | //监听滚动条 |
事件绑定
```
eventName(fn)
$(“button”).click(function(){})
1
2
3
4
5
6
7
8
!!部分JS事件不能实现(JQ有 JS没有的那种),可以绑定多个事件不会覆盖
2. ```
on(enentName,fn)
$("button").on("click",function(){
})!!所有JS事件(不管JQ里面有没有,只要JS里面有就可以)都可以实现,可以绑定多个事件不会覆盖
one
:执行一次事件解绑
1 | $(function(){ |
事件冒泡和默认行为
解除事件冒泡和默认行为分别有两种方法
1 | $(".son".click(function(){ |
事件自动触发
1 | $(".son".trigger("click"); // 自动触发son上面的click事件,冒泡事件仍然存在,也会触发默认行为 |
jQuery自定义事件
1 |
|
jQuery事件命名空间
1 | $(".son").on("click.zs",function(){ |
事件委托
1 | $("button").on("click",function(){ |
jQuery移入 移出
1 | $(".father").mouseover(function(){ |
index, eq,siblings
$(this).index()
获取到该元素在兄弟中的排位
$(".content").eq(0)
获取第0个元素
$(this).siblings
获取到除了当前元素(this)外的其他所有兄弟元素
显示和隐藏动画
1 | //显示动画 |
展开和收起动画
1 | //展开动画(由上往下滑下来展开) |
CSS: text-indent:2em
前面空出两个字的宽度
:nth-child(n)
第n个数字
:nth-child(2n)
偶数标签
:nth-child(2n-1)
奇数标签
:nth-child(-n+6)
负向范围,从第一个到第六个
:nth-child(n+6)
正向选择,从第六个到结束
:nth-child(-n+9)
:nth-child(n+6)
第6到9个,取两者交集
$(this).children(".sub")
找到this里面的sub子元素
淡入淡出
1 | $("div").fadeIn(1000,function(){ |
自定义动画
1 | $("button").click(function(){ |
stop() delay()
1 | $("button").click(function(){ |
添加节点
1 | $("button").click(function(){ |
删除节点
1 | $("button").click(function(){ |
替换节点
1 | var $h6 = $("<h6>我是标题666</h6>") |
复制节点
1 | var $li = $("li:first").clone(false); |
子节点
children
找到第一代儿子
find
可以找到所有后代孙子重孙都阔以
滚动条样式
使用插件mCustomScrollbar
注意点:先插入别人的CSS和JS文件,之后再 导入我们自身的文件,便于我们操作别人的文件
jquery原理
- 本质是一个闭包:立即执行的函数
- jQuery如何让外界访问内部定义的局部变量:
window.num = num;
将局部变量加到全局身上 - 为什么jQuery要给增加传一个window实参 :方便后期压缩代码,提高查找的效率
原型上的属性:
1 | $().jquery //获取jQ版本号 |