jQuery
jQuery可以看做是DOM/BOM/JavaScript的类库
jQuery的版本:
- 1.x 推荐,向前兼容性最好
- 2.x
- 3.x
jQuery和Dom对象之间的转换:
jquery对象[0] --> Dom对象
Dom对象 --> $(Dom对象)
jQuery常用用法:
1. 查找元素
DOM元素 10左右
jQuery选择器:
# 根据id查找
$("#id")
# 根据class查找
$(".c1")
# 根据标签查找
$("a")
$("div")
# 组合
$("a,.c1,#id")
# 层级
$("#id a") # 在id下所有层级查找a标签
$("#id>a") # 在id的下一层级中查找a标签
# 基本
:first
:last
:eq()
# 属性
$('[alex]') # 具有alex属性的所有标签
$("[alex='123']") # alex属性等于123的标签
$("input[type='text']") # input标签下所有type属性为text的
$(":text") # 所有具有text属性值的标签
多选反选全选实例用到的知识点:
- 选择权
- $('#tb:checkbox').prop('checked'); 获取值
- $('#tb:checkbox').prop('checked', true); 设置值
- jQuery方法内置循环: $('#tb:checkbox').xxxx
- $('#tb:checkbox').each(function(k){//k为当前索引 this:DOM元素,转化为jQuery元素$(this)})
- 三目运算: var v = 条件? 真值: 假值
示例代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>s2</title>
</head>
<body>
<input type="button" value="全选" onclick="checkAll();"/>
<input type="button" value="反选" onclick="reverseAll();"/>
<input type="button" value="取消" onclick="cancelAll();"/>
<table id="tb" border="1">
<thead>
<th>选项</th>
<th>IP</th>
<th>Port</th>
</thead>
<tbody>
<tr>
<td><input type="checkbox" /></td>
<td>1.1.1.1</td>
<td>3360</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>1.1.1.1</td>
<td>3360</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>1.1.1.1</td>
<td>3360</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>1.1.1.1</td>
<td>3360</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>1.1.1.1</td>
<td>3360</td>
</tr>
</tbody>
</table>
<script src="jquery-1.12.4.js"></script>
<script >
function checkAll(){
$("#tb :checkbox").prop("checked", true);
}
function cancelAll(){
$("#tb :checkbox").prop("checked", false);
}
function reverseAll(){
$("#tb :checkbox").each(
// 方法一:
// function(){
// if(this.checked){
// this.checked=false;
// }else{
// this.checked=true;
// }
// }
// 方法二
// function(){
// if($(this).prop("checked")){
// $(this).prop('checked', false);
// }else{
// $(this).prop('checked', true);
// }
// }
// 方法三,三目运算
function(){
var v = $(this).prop('checked')?false:true;
$(this).prop('checked', v);
}
);
}
</script>
</body>
</html>
jQuery 筛选器
# 向后
$('#i1').next()
$('#i1').nextAll()
$('#i1').netxUtil('#i2')
# 向前
$('#i1').prev()
$('#i1').prevAll()
$('#i1').preUntil('#i2')
# 父级
$('#i1').parent()
$('#i1').parents()
$('#i1').parentsUntil()
# 子级
$('i1').children()
# 兄弟
$('i1').siblings()
# 查找
$('#i1').find()
$('li:eq(1)')
$('li').eq(1)
first()
last()
hasClass('className')
示例- 实现左侧菜单代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>s3</title>
<style>
.hide {
display: none;
}
.header {
background-color: black;
color: wheat;
}
.content {
min-height: 50px;
}
</style>
</head>
<body>
<div style="height:400px;width:200px;border:1px solid #dddddd;">
<div class="item">
<div class="header">目录一</div>
<div class="content hide">fuck 1</div>
</div>
<div class="item">
<div class="header">目录二</div>
<div class="content hide">fuck 2</div>
</div>
<div class="item">
<div class="header">目录三</div>
<div class="content hide">fuck 3/div>
</div>
<div class="item">
<div class="header">目录四</div>
<div class="content hide">fuck 4</div>
</div>
</div>
<script src="jquery-1.12.4.js"></script>
<script>
$(".header").click(
function(){
$(this).next().removeClass("hide");
$(this).parent().siblings().find(".content").addClass("hide");
// 链式编程
// $(this).next().removeClass("hide").parent().siblings().find(".content").addClass("hide");
}
)
</script>
</body>
</html>
文本操作
$(..).text() # 获取文本内容
#(..).text("<a>1</a>") # 设置文本内容
$(..).html()
$(..).html(<a>1</a>)
$(..).val()
$(..).var()
样式操作
addClass
removeClass
toggleClass
属性操作
# 专门用于做自定义属性
$(..).attr('n')
$(..).attr('n', 'v')
$(..).removeAttr('n')
# 专门用于checkbox,radio
$(..).prop('checked')
$(..).prop('checked', true)
文档处理
append
prepend
after
before
remove
empty
clone
示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>s5-1</title>
<style>
.hide {
display: none;
}
.modal {
position: fixed;
top: 50%;
left: 50%;
width: 500px;
height: 400px;
margin-left: -250px;
margin-top: -200px;
background-color: #eeeeee;
z-index: 10;
}
.shadow {
position: fixed:
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: black;
opacity: 0.6;
z-index: 9;
}
</style>
</head>
<body>
<a onclick="addElement();">Add</a>
<table border="1" id="tb">
<tr>
<td target="hostname">pc1</td>
<td target="port">80</td>
<td target="ip">1.1.1.11</td>
<td>
<a class="edit">edit</a> | <a class="remove">remove</a>
</td>
</tr>
<tr>
<td target="hostname">pc2</td>
<td target="port">80</td>
<td target="ip">1.1.1.12</td>
<td>
<a class="edit">edit</a> | <a class="remove">remove</a>
</td>
</tr>
<tr>
<td target="hostname">pc3</td>
<td target="port">80</td>
<td target="ip">1.1.1.13</td>
<td>
<a class="edit">edit</a> | <a class="remove">remove</a>
</td>
</tr>
<tr>
<td target="hostname">pc4</td>
<td target="port">80</td>
<td target="ip">1.1.1.14</td>
<td>
<a class="edit">edit</a> | <a class="remove">remove</a>
</td>
</tr>
<tr>
<td target="hostname">pc5</td>
<td target="port">80</td>
<td target="ip">1.1.1.15</td>
<td>
<a class="edit">edit</a> | <a class="remove">remove</a>
</td>
</tr>
</table>
<div class="modal hide">
<div>
<input name="hostname" type="text"/>
<input name="port" type="text"/>
<input name="ip" type="text"/>
</div>
<div>
<input type="button" value="cancel" onclick="cancelModal();"/>
<input type="button" value="confirm" onclick="confirmModal();"/>
</div>
</div>
<div class="shadow hide"></div>
<script src="jquery-1.12.4.js"></script>
<script>
$(".remove").click(function () {
$(this).parent().parent().remove();
});
function confirmModal() {
var tds = $(".modal input[type='text']");
// console.log(tds);
var tr = document.createElement("tr");
var td1 = document.createElement('td');
// td1.innerHTML = "pc-test";
td1.innerHTML = $(tds[0]).val();
var td2 = document.createElement("td");
td2.innerHTML = $(tds[1]).val();
// td2.innerHTML = "8001";
var td3 = document.createElement("td");
// td3.innerHTML = "1.2.3.44";
td3.innerHTML = $(tds[2]).val();
var td4 = document.createElement("td");
td4.innerHTML = '<a class="edit">edit</a> | <a class="remove">remove</a>';
$(tr).append(td1);
$(tr).append(td2);
$(tr).append(td3);
$(tr).append(td4);
$('#tb').append(tr);
$(".modal,.shadow").addClass("hide");
$(".remove").click(function () {
$(this).parent().parent().remove();
});
$(".edit").click(function () {
$(".modal,.shadow").removeClass("hide");
var tds = $(this).parent().prevAll();
tds.each(
function () {
var n = $(this).attr('target');
var text = $(this).text();
var a1 = '.modal input[name="';
var a2 = '"]';
var temp = a1 + n + a2;
$(temp).val(text);
}
);
});
}
function addElement() {
$(".modal,.shadow").removeClass("hide");
}
function cancelModal() {
$(".modal,.shadow").addClass("hide");
$(".modal input[type='text']").val("");
}
$(".edit").click(function () {
$(".modal,.shadow").removeClass("hide");
var tds = $(this).parent().prevAll();
tds.each(
function () {
var n = $(this).attr('target');
var text = $(this).text();
var a1 = '.modal input[name="';
var a2 = '"]';
var temp = a1 + n + a2;
$(temp).val(text);
}
);
});
</script>
</body>
</html>
css处理
$('t1').css('样式名称', '样式值')
商品详情示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>s9-1</title>
<style>
.menu {
background-color: #dddddd;
height: 38px;
}
.menu .item-menu {
line-height: 38px;
float: left;
color: black;
border-right: 1px solid red;
padding: 0 10px;
}
.active {
background-color: darkred;
}
.hide {
display: none;
}
.content {
margin: 1px;
}
</style>
</head>
<body>
<div style="width:700px;margin: 0 auto; border: 1px;">
<div class="menu">
<div class="item-menu active">菜单1</div>
<div class="item-menu">菜单2</div>
<div class="item-menu">菜单3</div>
</div>
<div class="content">
<div>内容1</div>
<div class="hide">内容2</div>
<div class="hide">内容3</div>
</div>
<script src="jquery-1.12.4.js"></script>
<script>
$(".item-menu").click(
function(){
$(this).addClass("active").siblings().removeClass("active");
$(".content").children().eq($(this).index()).removeClass("hide").siblings().addClass("hide");
}
);
</script>
</div>
</body>
</html>
点赞实例用到的知识点:
- $('t1').append()
- $('t1').remove()
- setInterval
- 透明度 1 > 0
- positon
- 字体大小,位置
参考代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>s12</title>
<style>
.container {
padding: 50px;
border: 1px solid #dddddd;
}
.item {
position: relative;
width: 30px;
}
</style>
</head>
<body>
<div class="container">
<div class="item">
<span>赞</span>
</div>
</div>
<div class="container">
<div class="item">
<span>赞</span>
</div>
</div>
<div class="container">
<div class="item">
<span>赞</span>
</div>
</div>
<div class="container">
<div class="item">
<span>赞</span>
</div>
</div>
<script src="jquery-1.12.4.js"></script>
<script>
$(".item").click(function () {
addFavor(this);
});
function addFavor(self) {
// DOM Object
var fontSize = 15;
var top = 0;
var right = 0;
var opacity = 1;
var tag = document.createElement('span');
$(tag).text("+1");
$(tag).css('color', "green");
$(tag).css("position", "absoluete");
$(tag).css("fontSize", fontSize + "px");
$(tag).css("right", right + "px");
$(tag).css("top", top + "px");
$(tag).css("opacity", opacity);
$(self).append(tag);
var obj = setInterval(function () {
fontSize = fontSize + 10;
top = top - 10;
right = right - 10;
opacity -= 0.1;
$(tag).css("fontSize", fontSize + "px");
$(tag).css("right", right + "px");
$(tag).css("top", top + "px");
$(tag).css("opacity", opacity);
if(opacity < 0){
clearInterval(obj);
$(tag).remove();
}
}, 40);
}
</script>
</body>
</html>
位置
$(window).scrollTop() 获取
$(window).scrollTop(0) 设置
scrollLeft([var])
offset().left 指定标签在html中的坐标
offset().top 指定标签在html中的坐标
position() 自定标签相对父标签(relative)标签的坐标
$('i1').height() 获取标签的纯高度
$('i1').innerHeight() 获取标签的边框 + 纯高度 + ?
$('i1').outerHeight() 获取标签的边框 + 纯高度 + ?
$('i1').outerHeight(true) 获取标签的边框 + 纯高度 + ?
事件
$('.c1').click()
$('.c1')....
$('.c1').bind('click', function(){})
$('.c1').unbind('click', function(){})
$('.c').delegate('a', 'click', function(){})
$('.c').undelegate('a','click',function(){})
$('.c1').on('click',function(){})
$('.c1').off('click',function(){})
阻止事件发生: return false
当页面框架加载完成后,自动执行$(function(){ $(...)})
示例1:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>s11</title>
</head>
<body>
<input id="i1" type="text" />
<input id="a1" type="button" value="add"/>
<input id="a2" type="button" value="delete"/>
<input id="a3" type="button" value="copy"/>
<ul id="u1">
<li>1</li>
<li>2</li>
</ul>
<script src="jquery-1.12.4.js"></script>
<script>
$("#a1").click(function(){
var v = $('#i1').val();
var temp = "<li>" + v + "</li>";
$('#u1').prepend(temp);
// $('#u1').after(temp);
// $('#u1').before(temp);
});
$("#a2").click(function(){
var index = $('#i1').val();
$('#u1 li').eq(index).remove();
// $("#u1 li").eq(index).empty();
});
$("#a3").click(function(){
var index = $("#i1").val();
var v = $("#u1 li").eq(index).clone();
$("#u1").append(v);
// $("#u1 li").eq(index).remove();
// $("#u1 li").eq(index).empty();
});
</script>
</body>
</html>
jQuery扩展
-
$.extend
$.方法 -
$.fn.extend
$(..).方法
网友评论