一、入门
1.1下载
- https://github.com/jquery/jquery/releases 选择下载版本
- 解压进入dist文件夹下
? jquery.min.js:该版本是去除注释后的jQuery库,文件体积较小,实际项目运营时推荐使用该版本。 ? jquery.js:该版本的jQuery库没有压缩,而且保留了注释。 ? jquery.slim.min.js:该版本是jquery.min.js的“瘦身”版本,其实 就是去除了Ajax支持等功能的jQuery库。 ? jquery.slim.js:该版本是 jquery.js 的“瘦身”版本,同样去除了 Ajax 支持等功能,同时保留了注释。 - 放入项目文件夹下引入
<body>
<script type="text/javascript" src="../jquery.min.js"></script>
</body>
1.2 理解
使用jQuery动态更新HTML页面只需如下两个步骤: 4. 获取jQuery对象。jQuery对象通常是对DOM对象的包装。 5. 调用 jQuery对象的方法来改变自身。当 jQuery对象被改变时,jQuery包装的 DOM对象改变,HTML页面的内容也更新。
<body>
<div id="lee"></div>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
var target = $("#lee")
target.html("jquery")
.height(60)
.width(160)
.css("border","2px solid black")
.css("background-color","#ddddff")
.css("padding",20);
</script>
</body>
1.3 让jQuery与其他JavaScript库共存
jQuery中的
(
)
返
回
的
是
一
个
j
Q
u
e
r
y
对
象
,
其
他
J
a
v
a
S
c
r
i
p
t
库
中
的
()返回的是一个jQuery对象,其他JavaScript库 中的
()返回的是一个jQuery对象,其他JavaScript库中的()函数返回的不是jQuery对象(Prototype的$()函数返回的是一个DOM对象),因此必然引起冲突。 解决:
//取消jQuery中的$()函数,lee是起的别名,方便后续调用,用lee代替$
var lee = jQuery.noConflict();
// target是jQuery对象,可以调用下面方法
var target = lee("#lee")
二、获取jQuery对象
从jQuery库中获取jQuery对象主要有如下两种方式:
- 使用$()函数或用jQuery对象提供的利用父子关系返回的 jQuery对象。
- jQuery对象的调用方法改变自身后将再次返回该jQuery对象。
2.1 jQuery核心函数
<body>
<div id="a"></div>
<div id="b"></div>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
$("div").append("新增的内容");
$(document.getElementById("a"))
.css("border","2px solid black")
.css("background-color","#ddddff");
$("<input type='button' value='单击我'>").appendTo(document.body);
$("<input/>",
{
type:"button",
value:"有惊喜",
click:function(){alert("惊喜时刻!");}
})
.appendTo(document.body);
</script>
</body>
2.2 jQuery与jQuery.holdReady
? jQuery(callback):是$(document).ready()的缩写,在页面加载完成时自动激发callback,该函数返回将页面document对象包装成的jQuery对象。 ? jQuery.holdReady(true|false):指定是否需要延迟 jQuery 的 ready()事件绑定的事件处理函数。程序可以多次调用holdReady(true)来延迟ready事件的事件处理函数。如果绑定了多个holdReady(true),则需要多次调用holdReady(false)来解 除延迟,否则ready()事件绑定的事件处理函数将不会被激发。
<script>
$.holdReady(true);
$(() =>{
alert("装载完成");
})
window.setTimeout("$.holdReady(false);",5000);
</script>
2.3 CSS选择器访问DOM元素
<body>
<ul>
<li id="java">java</li>
<li id="c" class="test">c</li>
<li id="python">python</li>
<li id="javascript">javascript</li>
<li><span id="android">android</li>
</ul>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
$("#java").append("<b> 学习Java</b>");
$("li[id]").css("color","red");
$(".test").css("border","2px solid blue");
$("#python,#javascript").append("<b>学习python和js</b>");
$("ul #android").append("这是android");
$("ul>c").append("这是c");
$("#c~li").css("background-color","yellow");
</script>
</body>
2.4 伪类选择器访问DOM元素
<body>
<ul>
<li id="java">java</li>
<li id="c" class="test">c</li>
<li id="python">python</li>
<li id="javascript">javascript</li>
<li id="ajax">ajax</li>
<li><span id="android">android</li>
</ul>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
$("ul>li:first").append("<b> 学习Java</b>");
$("ul>li:last").append("<b> 学习使我快乐</b>");
$("ul>li:not([id])").css("color","red");
$("ul>li:even").css("background-color","skyblue");
$("ul>li:odd").css("background-color","grey");
$("ul>li:gt(4)").append("<b>学习python和js</b>");
$("ul>li:lt(4)").append("<b>学习python和js</b>");
$("ul>li:eq(2)").append("<b>好好学习</b>");
$("ul>li:contains(java)").append("<b>天天向上</b>");
$("ul>li:has('span')").append("这是android");
$("li>span:visible").append("可见span元素");
$("li:nth-child(3)").append("访问3元素");
$("li:nth-last-child(3n+1)").append("访问倒数1,4,7元素");
$("span:only-child()").append("唯一span元素");
</script>
</body>
2.5 表单相关选择器
<body>
<input id="user" type="text" /><br />
<input id="pwd" type="password" /><br />
<textarea id = "intro"></textarea><br />
<select id="gender" size="3" style="width: 80px;">
<option value="male">男</option>
<option value="female">女</option>
</select><p>
<input id="pwd" type="checkbox" checked value="xx" /><br />
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
$(":input:not('select')").val("test");
$(":selected").css("border","2px dashed black");
$(":checked").prop("checked",false);
</script>
</body>
三、 jQuery操作类数组
<body>
<div>
<div id="java">java</div>
<div id="c"> c </div>
<div id="python">python</div>
<div id="javascript">javascript</div>
<div id="ajax">ajax</div>
<div id="android">android</div>
</div>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
$("div>div").each(function(i){
this.innerHTML += " 索引为: " + i;
})
console.log($("div>div").length);
console.log($("div>div").get(1).innerHTML);
console.log($("#java").get()[0].innerHTML);
console.log($("div>div").index($("#c")));
console.log($("div>div").jquery);
</script>
</body>
3.1 过滤
<body>
<div>
<div id="java">java</div>
<div id="c"> c </div>
<div id="python">python</div>
<div id="javascript">javascript</div>
<div id="ajax">ajax</div>
<div id="android">android</div>
</div>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
$("div>div").eq(3).css("font-size","24pt");
$("div>div").filter("#ajax").css("background-color","#aaa");
$("div>div").filter(function(){
return this.innerHTML.length > 8;
}).css("color","red");
$("div>div").not("#ajax").css("background-color","#skyblue");
$("div>div").slice(3,5).height(60);
var result = $("div>div").map(i => i);
console.log(result);
</script>
</body>
3.2 仿DOM导航查找
<body>
<div>
<div id="java">java</div>
<div id="python">python</div>
<div id="ajax">ajax</div>
<div id="c"> c </div>
<div id="javascript">javascript</div>
<div id="android">android</div>
</div>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
$("body>div").contents().css("background-color","#ddd");
$("#ajax").next().css("background-color","red");
$("#ajax").nextUntil("#android").css("background-color","yellow");
$("#ajax").prev().css("background-color","grey");
$("#ajax").nextUntil("#java").css("background-color","skyblue");
$("#ajax").siblings("#java").append("ccc");
$("div").parent().each(function(){
alert($(this).html());
})
</script>
</body>
3.3 串联
<script type="text/javascript">
$("#java").add("<p>新加的元素</p>").prependTo("body");
$("#ajax").next().addBack().css("border","2px solid black");
$("#ajax").next().end().css("background-color","#ffaaaa");
</script>
四、jQuery支持的方法
4.1 jQuery命名空间
<script>
document.writeln("浏览器是否支持创建XMLHttpRequest: "+$.support.ajax+"<br/>");
document.writeln("属性有 withCredentials 属性: "+$.support.cors+"<br/>");
document.writeln("判断value是否为数值: "+$.isNumeric(12.2)+"<br/>");
document.writeln("截断字符串前后的空白: "+$.trim(" 小妇人")+"<br/>");
document.writeln("数组中包含4元素位置是:"+$.inArray(4,[1,2,3,4])+"<br/>");
$.each(["java","python","scale","c++"],function(index,val){
document.writeln("第"+index+"的元素是:"+val+"<br/>");
})
var result = $.grep(["java","python","scale","c++"],function(val,index){
return val.length > 5;
})
document.writeln("大于5的字符: "+result+"<br/>");
var result1 = $.map(["java","python","scale","c++"],function(val,index){
return val + index;
})
document.writeln("将array数组转换为另一个数组: "+result1+"<br/>");
var div = $("<div>aa<div>");
var divArr = [div div];
document.writeln("divArr.length的值为:"+divArr.length+"<br/>");
document.writeln("divArr.length的值为:"+uniqueSort(divArr).length+"<br/>");
var result2 = $.parseJSON('[{"name":"孙悟空","age":500},'+'{"name":"白骨精","age":21}]');
for(var i = 0,len = result2.length;i<len;i++){
document.writeln("第"+i+"个角色姓名是:"+result2[i].name+"年龄是:"+result2[i].age+"<br/>");
}
</script>
4.2 数据存储
<div>
最有趣的人物是<span></span>
它的年龄是:<span></span>
</div>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
var target = $("<div>java</div>");
target.data("book","java");
console.log(target.data("book"));
target.removeData("book");
console.log(target.data("book"));
var div = $("body>div")[0];
$.data(div,"test",{name:"孙悟空",age:500});
$("span:first").text(jQuery.data(div,"test").name);
$("span:last").text(jQuery.data(div,"test").age);
$.removeData(div);
console.log($.hasData(div));
</script>
4.3 操作属性
<body>
<img/><img/>
<div>
<img/><img/><img/>
</div>
<script type="text/javascript"src="../jquery-3.1.1.js">
</script>
<script type="text/javascript">
$("body>img").attr ("src","logo.jpg").attr("alt","Java");
$("div>img").prop("src",function(index)
return index 1 ".gif";
});
</script>
</body>
4.4 操作CSS属性
<body>
<div id="testl">整体添加CSS样式的元素</div><br/>
<div id="test2">采用css(properties)方法添加CSS样式的元素</div><br/>
<div id="test3"style="position:absolute;">可以自由移动的元素</div>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
$("#test1").addClass("test");
$("#test2").css({border:"1px solid black",color:"#888"});
var target = $("#test3")
target.html("jquery")
.height(60)
.width(160)
.css("border","2px solid black")
.css("background-color","#ddddff")
.css("padding",20);
var pos = target.position();
console.log("x坐标为:"+pos.left+"\n"+"y坐标为:"+pos.top);
</script>
</body>
4.5 操作元素
<body>
<div></div><div></div>
<input id="book"name="book"type="text"/><br />
<input id="desc"name="desc"type="text"/><br/>
<select id="gender">
<option value=-"male">男</option>
<option value=-"female">女</option>
</select><br />
<select id="publish"multiple="multiple">
<option value="phei">电子工业出版社</option>
<option value=-"ptpress">人民邮电出版社</option>
</select><br />
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
$("body>div").html("java");
$(":input").val("xml");
$("select").val("female","m");
console.log($("<div>java:<span>java</java></div>").text());
</script>
</body>
<body>
<div>1</div><div>2</div><div>3</div>
<script type="text/javascript" src="../jquery.min.js"></script>
<script>
var books =[
{name:"疯狂Java讲义",price:109},
{name:"轻量级Java EE企业应用实战",price:89},
{name:"疯狂Android讲义",price:89}]
$("body>div").append(function(i){
return books[i].name + books[i].price;
});
</script>
五、jQuery事件相关方法
5.1 绑定事件处理函数
<body>
<input id="test1"type="button"value="单击我"/><br/>
<input id="test2"type="button"value="切换右边复选框的勾选状态"/>
<input id="check"type="checkbox"value=""/><br />
<input id="test3"type="button"value="toggle"/><br />
<div id="tg"style="width:300px;height:120px;background-color:gray;"></div>
<script type="text/javascript"src="../jquery.min.js">
</script>
<script>
$(document).ready(function(){
alert("页面加载完成!");
})
$("#test1").on("click",{book:"java"},function(event){
alert("事件为:"+event+"book属性为:"+event.data.book);
});
$("#test2").on("click",function(event){
$("#check").trigger("click");
});
$("#test3").on("click",function(event){
$("#tg").toggle("slow","linear",function(){
console.log("动画完成!")
});
});
</script>
</body>
5.2 特定事件相关的方法
<body>
<input id="test1"type="button"value="单击我"/><br/>
<div id="test2">鼠标悬停</div>
<script type="text/javascript"src="../jquery.min.js"></script>
<script>
$("#test1").click(function(event){
alert("test1鼠标被单击:"+event);
}).click();
$("#test2").css("border","1px solid black")
.css("background-color","cccccc")
.width (200)
.height(80)
.hover(function(event){
alert("鼠标移入元素内");
}),
function(){
alert("鼠标移入元素!");
}
};
</script>
</body>
5.3 事件对象
which:对于鼠标、键盘事件,该属性返回激发该事件的鼠标 键或键盘键。
|