JQuery基础及css和属性操作 其他函数
JQuery语法
使用JQuery必须先导入jquery-X.X.X.js文件
jQuery中的选择器 $("选择器名称").函数名();
注意 $ 是jQuery的缩写,也就是说,选择器可以使用jQuery(":input")
jQuery 文档就绪函数
$(document).ready(function(){ //jQuery代码 console.log($(":input:disabled")), });
简写文档就绪函数 $(function(){})
jQuery 与window.onload的区别
window.onload必须等待网页资源全部加载完成后,才能执行
文档就绪函数 只需等到网页DOM结构加载完成后,即可执行
window.onload在一个页面中只加载一次
文档就绪函数在一个页面中可以有n个
jQuery对象和js对象
使用$("")取到的节点为jQuery对象,只能调用jQuery方法,不能使用原生JS方法
$("#div1").click(function(){});正确
$("#div1").onclick=function(){};错误 使用jQuery调用原生JS
同理 使用getelement系列函数取到的为JS对象,也不能调用jQuery函数
jQuery对象和js对象的相互转换
jQuery对象转js对象 使用.get(index)或[index]选中度就是JS对象
$("div")[0].onclick(function(){}); $("div").get(0).onclick(function(){});
js对象转jQuery对象 使用$包裹JS对象
var div=document.getElementsByTagName("div"); $(div).click(function(){});
解决jquery多库冲突问题
页面中如果同时引入多个JS框架可能导致$冲突
解决方法
使用jQuery.noConflict();使jQuery放弃在全局使用$
使用jQuery关键字替代$ 或者使用一个自执行函数
!function($){ //在自执行函数中,可以使用&替代jQuery //除自执行函数外的其他区域,禁止jQuery使用$ }(jQuery);
css和属性操作
设置节点属性
$("#div1").attr("class","cls")
传入对象以键值对的形式同时设置多对属性
$("#div1").attr({ "class" :$("#div1").attr("class")+" cls1" "name":"name1" "style":"font-size:20px;color:red;"
})
通过回调函数返回值,修改css的样式。
$("button:eq(0)").click(function(){ var id = setInterval(function(){ $("#div1").css({ "width":function(index,value){ var v = parseFloat(value) + 1; if(v>600){ clearInterval(id); } return v+"px"; } }); },10); });
取到节点属性
console.log($("#div1").attr("id"));
删除节点属性
$("#div1").removeAttr("class")
attr与prop一样,都可以对节点进行读取和设置
attr与prop的区别
在读取属性名=属性值的属性时,attr将返回属性值和undefined prop将返回true或false
也就是说,attr要取到的属性,必须是在标签上已经写明的属性,否则返回undefined
console.log($("input:eq(0)").attr("disabled"))
console.log($("input:eq(0)").prop("disabled"))
在原有class的基础上新增class名 如果没有class属性,将自动添加
$("#div1").addClass("cls")
删除指定的class名称,其他没删除的class名依然保留 如果删空将只留下class属性
$("#div1").removeClass("cls")
切换class 如果有指定class就删除 如果没有就新增
$("button:eq(0)").click(function(){ $("#div1").toggle("div1") })
.html取到或设置节点中的HTML代码
.text取到或设置节点中的文本
.val取到或设置节点中的value值
console.log($("#div1").html("<p>555</p>").html()) console.log($("#div1").text("<p>555</p>").text()) console.log($("input").val("<p>6666</p>").val())
.css给节点添加css样式 属于行级样式表权限
$("#div1").css("color","#008000")
同时给多个节点添加多对css样式
$("#div1").css(function(){ "color":"#008000" "font-size":"20px" })
取到或设置节点的宽高
$("#div1").width("400px")
$("#div1").height(400)
取到节点的宽度+padding 不包含border和margin
$("#div1").innerHeight()
$("#div1").ininnerWidth()
不传参数 表示宽高+padding +border
传入true 表示宽高+padding +border+margin
console.log($("#div1").outerHeight()) console.log($("#div1").outerWidth(true))
返回一个节点相对于浏览器左上角的偏移量,返回一个对象{top:20px left:20px}
console.log($("#div1").offset())
返回一个节点相对于父容器的偏移量
注意 ①使用此方法 要求父元素必须是定位元素 如果父容器不是定位元素,则依然是相对于浏览器左上角进行测量
②使用此方法 测量偏移时,将不考虑margin 而会将margin视为当前容器的一部分
console.log($("#div1").position())
scrollTOp设置或取到指定节点的竖直滚动条的位置
$("#div1").scrollTOp()
水平 滚动条的位置
$("#div1").scrollLeft()
each用于遍历jQuery中的对象数在回调函数中使用returnfalse相当于breakreturntrue相当于continue
$("#ul li").each(function(index,value){ console.log(index) console.log($(value).text())
在回调函数中 this指向当前调用函数的节点对象
this是一个JS对象,如果要使用JQ对象,需使用$(this)
console.log(this) $(this).text($(value).text()+"qqq") })
.size() .length 返回所查询数组的个数
console.log($("#ul li").size())
console.log($("#ul li").length)
.get()将jQuery对象,转为JS对象
传入index表示取出第几个,并转为JS对象
不传参数,便是将jQuery中的所有对象,转为JS对象
console.log($("#ul li").get())
$.each(arr、obj,function(){})
对传入的数组或对象进行遍历,可以是jQuery对象数组,也可以是JS中的数组和对象
$.each($("li"),function(index,value){ console.log(index) console.log(value) })
数组映射
var arr=[1,2,3,4] var newarr=$.map(arr,function(index,value){ return value+5; }) console.log(newarr)
检测一个值是否在数组中,返回下标,没有返回-1 第三个参数表示查找的起始下标
var arr=[1,2,3,4] var is=$.Array(2,arr,3) console.log(arr.indexOf(2,3)) console.log(is)
将选中的jQuery DOM集合 恢复成数组,数组的每一个对象都是JS对象
console.log($("#ul li").toArray())
合并两个数组
var arr=$.merge( [0,1,2], [2,3,4] ) console.log(arr)
$.parseJSON()将一个JSON字符串转换成JSON对象
var str='{"":"","":"","":"","":"","":"","":""}' console.log(str) console.log($.parseJSON(str)) });
检测一个节点是否包含另一个节点
console.log($.contains($("#ul")[0],$("#li")[0]))
console.log($.contains($("#li")[0],$("#ul")[0]))