jQuery笔记1
1,简介
jQuery是JavaScript函数库,我们只需要调用相应的方法,宗旨是用最少的方法完成最复杂的功能。版本1.?兼容IE8,版本2.?不兼容IE8。1.9-1.11的版本差别不是很大。不要使用1.9以下的版本。
2,特点
2-1,核心库只有几十kb
2-2,代码简洁,支持链式代码风格
2-3,跨平台,jQuery对各种浏览器都保持了很好的兼容性,可大幅提高前端开发测试效率
2-4,高性能
2-5,插件众多
下面是辅助代码:
<div id="box">
<P>测试</P>
</div>
<div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
</div>
快速生成li标签方法:li{$}10
3,/1,$可以传匿名函数(){}/
$(function (){
/2,传页面元素选择器,:返回的是jQuery对象
* 主要是对原始DOM对象进行了一个封装
* jQuery提供了统一的API(属性和方法)都能够使用*/
$("#box").css("color","red");
console.log($);//返回初始化函数
console.log($());//调用一下初始化函数
console.log($("#box"));//返回的是jQuery对象
console.log($("#box").css("color","red"));//返回的还是jQuery对象
$("#box").css("color","red").css("font-size","50px");
console.log($("#box").css("color","red").css("font-size","50px"));
/*上述还是返回jQuery对象,这是链式代码风格的原理,每次操作后都是返回jQuery对象*/
});
4,关于window.onload和$(document).ready(function(){})的区别
/*1,window.onload
* 页面加载完毕:html,css,所有资源(包括图片视频等)全部加载完以后执行里面的内容
* 只能写一次,会覆盖
*
2,$(document).ready(function(){})
* 只需要等待DOM结构加载完毕就可以执行,加载DOM结构很快,使用这个不用等图片或者视频加载完就可以执行
* 可以执行多次,不会被覆盖
* 简写$(function(){...})
* 另外一种写法,匿名函数自动执行,把jQuery对象传参数进去,目的是为了避免和其他函数库发生冲突
* (function ($){
* 代码
* })(jQuery)
*
* 3,如果必须要等资源加载完,则使用jQuery提供的方法
* $(window).load(function(){...})
* 可以使用多次,不会被覆盖/
5,jQuery-DOM选择器如何使用
5-1,css2基本选择器和符合选择器都能正常使用:$("#id"),$(".class"),$("tag")
例如:
$(function (){
var myli=$("div ul li");获取上述结构中的li标签对象
console.log(myli);
console.log(myli.length);
//返回10, length是jquery里提供的属性
如果在DOM中直接使用length是不能够有结果的:
console.log(document.getElementById("box").length);
//返回undefined,length不是原生的方法,可以用在获取document.getElementsByTagName()和document.getElementsByClassName()中
DOM对象和jQuery对象之间的互换
//打印DOM对象
console.log(document.getElementById("box"));
//打印jQuery对象
console.log($("#box"));
//把jQuery对象转换为DOM对象
console.log($("#box").get(0));
//把原生DOM对象转换为jQuery对象
console.log($(document.getElementById("box")));
});
5-2,对input标签内容进行更改
DOM结构:
<div id="txt">
<input type="text">
<button onclick="getValue()">点击获取值</button>
<button onclick="setValue()">点击设置值</button>
</div>
function getValue(){
console.log("==========");
var mytxt=$("input[type='text']").val();//jquery对象获取value的方法
console.log(mytxt);
}
function setValue(){
$("input[type='text']").val("你好")
}
5-3,对html结构进行更改
DOM结构
<div id="box">
<P>测试</P>
</div>
<button onclick="getHTML()">获取HTML</button>
<button onclick="setHTML()">设置HTML</button>
<button onclick="addHTML()">addHTML</button>
function getHTML(){
console.log($("#box").html());
}
function setHTML(){
$("#box").html("<p>我是替换的标题</p>");
}
function addHTML(){
$("#box").html($("#box").html()+"<p>我是替换的标题</p>");
}
5-4,关于checkbox以及属性操作
<div id="myCB">
<input type="checkbox" value="1"/>
<input type="checkbox" value="2"/>
<input type="checkbox" value="3"/>
<input type="checkbox" value="4"/>
<input type="checkbox" value="5"/>
<input type="checkbox" value="6"/>
<input type="checkbox" value="7"/>
<input type="checkbox" value="8"/>
<input type="checkbox" value="9"/>
<input type="checkbox" value="10"/>
</div>
快速生成input标签:
Input[type=”checkbox”value=”$”]*10
<script>
//获取勾选的checkbox,字符串加伪类
//input[type="checkbox"]:checked
function getCB(){
console.log($("input[type='checkbox']:checked"));
//获取勾选的
console.log($("input[type='checkbox']:checked").val());
//获取勾选的value值
//但是只能获取到第一个
//需要遍历
var a=$("input[type='checkbox']:checked").length;
for(var i=0;i<a;i++){
console.log($("input[type='checkbox']:checked")[i]);
//获取到的是原生节点,想到打印出value值需要使用value
console.log($("input[type='checkbox']:checked")[i].value);
//使用jQuery方法
console.log($($("input[type='checkbox']:checked")[i]).val());
}
}
//对元素属性进行操作
//获取
function getAttr(){
console.log($("#input1").attr("type"))
}
//设置,可以设置任何属性
//attr(“属性名”,“值”)
function setAttr(){
$("#input1").attr("type","text")
}
function setAttr(){
$("#input1").attr("class","myclass")
}
//设置多个属性值
//attr({"属性1":"值1","属性2":"值2"})
function setAttr(){
$("#input1").attr({"class":"myclass","id":"myinput1"})
}
//移除属性值
function removeAttr(){
$("#input1").removeAttr("class")
}
</script>
5-5,对标签的class操作
DOM结构
<style>
/#box{/
/color:red;/
/}/
/.myclass{/
/border:1px solid black;/
/}/
/.myclass1{/
/background-color: red;/
/}/
.red{
color: red;
}
.blue{
color: blue;
}
.yellow{
color: yellow;
}
</style>
<body>
<div id="box">
测试
</div>
<button onclick="mytoggleclass()">class切换</button>
</body>
<script>
$(function(){
//获取单个CSS样式
console.log($("#box").css("color"));
//获取多个CSS样式
console.log($("#box").css(["color","width","height"]));
//设置单个CSS样式
$("#box").css("background-color","green");
//设置多个CSS样式,以传送对象来设置多个CSS样式
$("#box").css({"height":"100px","width":"1366px"});
//添加CSS class
$("#box").addClass("myclass myclass1");
//移除class指定的值
$("#box").removeClass("myclass");
//与attr不同的是能移除或者添加指定的属性值,而removeAttr将所有class移除,移除的是属性,而不是值
});
//class之间的切换
function mytoggleclass(){
/如果存在(不存在)就删除(添加)一个类/
$("#box").toggleClass("yellow");
/如果写两个的话,就会被覆盖/
$("#box").toggleClass("yellow blue");
/这时需要写判断/
/* 语法是:toggleClass(function (){
return 最终要切换的值
})*/
$("#box").toggleClass(function (){
return $("#box").hasClass("blue")?"yellow":"blue";
})
}
</script>
6,jQuery-DOM节点操作
DOM结构
<style>
#main{
width: 1366px;
height: 100px;
border: 1px solid red;
}
</style>
<body>
<div id="main">我是main</div>
<p>P元素</p>
<h1>内部操作节点:</h1>
<button onclick="myAppend()">依次插入节点到main节点内部后面</button>
<button onclick="myAppendto()">移动节点到main节点内部最后面</button>
<button onclick="myPrepend()">依次插入节点到main节点内部前面</button>
<button onclick="myPrependto()">移动节点到main节点内部最前面</button>
<h1>外部操作节点:</h1>
<button onclick="myafter()">移动到main节点外部之后</button>
<button onclick="myinsertafter()">main节点外后插入</button>
<button onclick="mybefore()">移动到main节点外部之前</button>
<button onclick="myinsertbefore()">main节点外前插入</button>
<h1>包裹</h1>
<button onclick="mywrap()">指定节点包裹</button>
<button onclick="myunwrap()">移除包裹</button>
<h1>复制,删除,替换</h1>
<button onclick="myclone()">复制节点</button>
<button onclick="mydelete()">删除节点</button>
<button onclick="myreplace()">替换节点</button>
</body>
<script>
//节点内部操作
function myAppend(){
var newbox=$("<div>新添加的节点</div>");
$("#main").append(newbox).css("height","auto");
}
function myAppendto(){
$("p").appendTo($("#main"))
}
function myPrepend(){
$("#main").prepend("<span>我是sapn</span>")
}
function myPrependto(){
$("p").prependTo($("#main"))
}
//节点外部操作
function myafter(){
$("#main").after($("span"));
}
function myinsertafter(){
$("<span>我是sapn</span>").insertAfter("#main")
}
function mybefore(){
$("#main").before($("span"));
}
function myinsertbefore(){
$("<span>我是sapn</span>").insertBefore("#main")
}
//包裹
function mywrap(){
//为每一个span元素包裹一层div
$("span").wrap("<div></div>")
//包裹所有
$("span").wrapAll("<div></div>")
}
//移除包裹
function myunwrap(){
//每次只移除一层包裹,可以连续调用
$("span").unwrap().unwrap()
}
//复制,删除,
function myclone(){
/*clone(true)表示复制元素和内容加上事件处理行为
* clone()只有元素和内容*/
$("p").clone();//只是复制了,不会有任何变化,需要操作
$("p").clone().appendTo($("#main"));
}
function mydelete(){
$("p").remove();
}
function myreplace(){
$("span").replaceWith("<div>替换的内容</div>")
}
</script>