html_jQuery

时间:2021-03-22 08:30:07

jQuery:对Dom和js的封装模块

jQuery 低版本(1.x)兼容IE,jquery下载:http://jquery.com/download/

若不考虑兼容ie,可下载最新版

我用的jQuery版本:https://code.jquery.com/jquery-3.3.1.js

可以把min.js文件转换为.js文件滴东东:http://tool.chinaz.com/Tools/JsFormat.aspx

jQuery提供所有的方法:http://jquery.cuishifeng.cn/index.html

1.基本选择器

获取标签,修改内容($==jQuery)

<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<body>
<div id='n1'>11</div>
<div class='c1'>22</div>
<div class='c1'>22</div>
<a></a>
<span id = 'n2'></span>
<div id = 'n3'>
<div>
<div class='c3'>
<span>
<a>asd</a> //<a class="c4"></a>
</span>
</div>
</div>
<span>adfs</span>
</div>
<script src='jquery-3.3.1.js'></script>
<script>
//获取标签// $相当于jQuery
$("#n1").text('123');
$('div').text('xxx');
$('.c1').text('oo');
$('.c1,a,#n2').text('ok');
$('#n3 div .c3 span a').text('kkk'); //$('.c4').text('000'); </script>
</body>
</html>

小例砸

2.选择器

$('label+input') 选中lable旁边有input的标签
$('form~input') 兄弟标签input标签
$('li:first') 找到li标签的第一个标签
$('input:not(:checked)' 找到input下没有checked属性的标签(没有被选中的标签)
$('tr:even') 找到tr标签中索引从零开始为偶数的tr 
$('tr:eq(1)') 找到tr标签中索引值为1的标签
$('div:contains('John')') 找到div标签 文本里有John的标签
$('div[sb='XXOO']') 所有div标签中找到div属性中有自定义属性sb='XXOO'的标签
$('ul li:first-child') 找到ul标签下li标签的第一个子孩子
$(':input') 找到所有的input标签
$('input[type='password']')==$(' :password') 所有input标签中找到属性中有[type='password']的标签
$('input:checked') 表示属性有checked=checked标签(被选中的标签)

3.筛选器

$('tr').eq(num) 匹配到索引为num的标签
$('div').hasClass('perfect') 检查当前类是否有perfect类
$('.c1').children() 找到c1类下所有的‘孩子’,不是孙子
$('.c1').find('a') 在兄弟姐妹的子子孙孙里找到a标签
$('.c1').next() 找到c1类的下一个兄弟标签
$('.c1').nextAll() c1类的下的所有的兄弟标签
$('.c1').prev()  c1类的上一个兄弟标签
$('.c1').prevAll() c1类的上的所有的兄弟标签
$('.c1')siblings() c1同级的所有的兄弟标签
$('#n10').parent().siblings() 找到n10的父标签的所有兄弟标签

4.小小方法

$('#nid').toggleClass('hide')           如果有class=hide则移除掉hide ,没有则添加class= hide     
$('#nid').html() 可以获取所有包括html标签的所有东西
$('#nid').html(‘dfkfdl’)  修改值
text() 获取标签的文本
val() 针对获取input系列 select textarea文本


5.属性

有关checkbox的属性操作:

$('#c1').attr('XXOO','sb'); 表示给id为c1的添加属性XXOO='sb'(关键字: attr)

$('#c2').attr('checked','checked');表示给checkbox设置属性选中

$('#c2').removeAttr('checked');删除选中

然而给checkbox  /  radio 属性的设置后,一旦删除就不能再设置(其他属性可以)

故,针对checkbox和radio 有专用的快捷设置:“prop”

$('#c2').prop('checked',true);  表示选中
$('#c2').prop('checked',false);   表示取消选中

6.有关于each的for循环

var userList=[11,22,33,44];
$.each(userList function(i,item){ // each 即可获取下标,也可获取元素
console.log(i,item); // i是下标 item是元素
});

小例子:对表格的操作(选中,取消,反转)

<html>
<head>
<meta charset='utf8'/>
<title></title> </head>
<body>
<div>
<div>
<input type='button' value='全选' onclick='SelectAll();'/>
<input type='button' value='取消' onclick='ClearAll();'/>
<input type='button' value='反选' onclick='ReverseAll();'/> </div>
<table border='1'>
<tr>
<td><input type='checkbox'/></td>
<td>123</td>
<td>1233</td> </tr>
<tr>
<td><input type='checkbox'/></td>
<td>123</td>
<td>1233</td> </tr>
<tr>
<td><input type='checkbox'/></td>
<td>123</td>
<td>1233</td>
</tr>
</table>
</div>
<script src='jquery-3.3.1.js'></script>
<script>
function SelectAll(){
//table标签中所有的input
$("table input[type='checkbox']").prop('checked',true); // 找到所有的input的checkbox
//$('table :checkbox').prop('checked',true);
}
function ClearAll(){
//table标签中所有的input
//$('table input[type='checkbox']') // 找到所有的input的checkbox
$('table :checkbox').prop('checked',false); // 这种写法注意table后要有空格
}
function ReverseAll(){
/*var checkList=$('table :checkbox');
for(var i in checkList){ // 利用for循环把每一个元素都拿到
var ele = checkList[i];
var isChecked = $(ele).prop('checked');
if(isChecked){
$(ele).prop('checked',false);
}else{
$(ele).prop('checked',true);
}
}*/
$('table :checkbox').each(function(){ // each相当于for循环
var isChecked=$(this).prop('checked');//$(this)表示当前元素
if(isChecked){
$(this).prop('checked',false);
}else{
$(this).prop('checked',true);
}
});
}
</script>
</body>
</html>

jQuery骚操作1号

小小例子:网页侧目录(会动的哟)

<html>
<head>
<meta charset = 'utf8'>
<title></title>
<style>
.menu{
float:left;
height:500px;
width:20%;
background-color:antiquewhite;
}
.content{
float:left;
height:500px;
width:80%;
background-color:#777;
}
.title{
background-color:black;
color:white;
hight:40px;
line-height:40px;
border:2px solid white;
}
.hide{
display:none;
}
</style>
</head>
<body>
<div>
<div class = 'menu'>
<div class='item'>
<div class='title' onclick='Func(this);'>菜单一</div>
<div class='body'>
<div>1.0</div>
<div>1.1</div>
<div>1.2</div>
</div>
</div>
<div class='item'>
<div class='title' onclick='Func(this);'>菜单二</div>
<div class='body hide'>
<div>2.0</div>
<div>2.1</div>
<div>2.2</div>
</div> </div>
<div class='item'>
<div class='title' onclick='Func(this);'>菜单三</div>
<div class='body hide'>
<div>3.0</div>
<div>3.1</div>
<div>3.2</div>
</div>
</div>
</div>
<div class = 'content'>
</div>
</div>
<script src='jquery-3.3.1.js'></script>
<script>
function Func(ths){
// 获取菜单 、获取菜单二
// this 表示当前的菜单 // $(ths) 获取菜单一二三
// $(ths).text(); // 获取到<div class='title' onclick='Func(this);'>菜单三</div>内容
$(ths).next().removeClass('hide'); // 移除hide样式
$(ths).parent().siblings().find('.body').addClass('hide'); //给出自身的兄弟标签的body项加上hide样式 }
</script>
</body>
</html>

jQuery骚操作2号

$(window).scroTop() : 窗体滚动多少,也可在scrollTop里添加值进行设置窗体滚动到的位置

小小小例子: 返回顶部

<html>
<head>
<meta charset='utf-8'>
<title></title>
<style>
.go-top{
position:fixed;
right:50px;
bottom:50px;
border:2px solid yellow;
background-color:yellow;
}
.hide{
display:none;
}
</style>
</head>
<body>
<div style='height:2000px;background-color:#dddddd;'>
<div style='height:500px;background-color:antiquewhite;overflow:auto;'> <!--overflow:auto;设置滚动条-->
<p>我是一个占位符</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>占位结束</p>
</div>
<div class='go-top'><a onclick='Gotop();'>返回顶部</a></div>
</div>
<script src='jquery-3.3.1.js'></script>
<script>
window.onscroll=function(){ // 表示每当滚动条滚动都会执行一次这个函数
//每滚动一次就获取scrollTop的值
var currentTop = $(window).scrollTop();
if(currentTop>200){ // 如果滚动的值大于200 取消隐藏
$('.go-top').removeClass('hide'); // 通过样式获取到标签
}else{
$('.go-top').addClass('hide');
}
}; function Gotop(){
$(window).scrollTop(0);
}
</script>
</body>
</html>

jQuery骚操作-返回顶部初级版

<html>
<head>
<meta charset='utf8'>
<title>返回顶部</title>
<style>
.hide{
display:none;
}
.icon{
background-color:#86eaf2;
width:32px;
height:32px;
display:inline-block;
overflow:hidden;
}
.back{
position:fixed;
right:20px;
bottom:20px;
width:50px;
}
.gotop{
position:relative;
width:48px;
height:38px;
border:1px solid #ddddd;
color:#fff;
text-align:center;
}
.gotop .icon{
margin-top:0px;
}
.gotop:hover:after{ <!--hover鼠标移上去应用这个样式-->
top:0;
left:0;
width:100%;
height:100%;
content:" ";
position:absolute;
background-color:#d9f1f2;
}
.content{
visibility:hidden; <!--隐藏content样式--->
width:30px;
height:32px;
padding:3px 10px;
cursor:pointer;
font-size:12px;
z-index:1;
text-align:center;
line-height:16px;
top:0;
position:absolute;
}
.gotop:hover .content{
visibility:visible; <!--把content样式设置为可见-->
}
</style>
</head>
<body>
<div style='height:2000px;'>页面内容</div>
<div class='back hide'>
<div class='gotop' onclick='GoTop();'>
<a class='icon'></a>
<div class='content'>
<span style='color:black;'>返回顶部</span>
</div>
</div>
</div>
<script src='jquery-3.3.1.js'></script>
<script>
function GoTop(){
$(window).scrollTop(0); //返回顶部
}
$(function(){
$(window).scroll(function(){ // 当滚动滑轮时,执行函数体
var top = $(window).scrollTop(); // 获取当前滑轮高度
if(top>0){
$('.back').removeClass('hide'); // 展示返回顶部
}else{
$('.back').addClass('hide'); // 隐藏返回顶部
}
});
});
</script>
</body>
</html>

jQuery骚操作-返回顶部 终极 版

终极版的关键语句:

.gotop:hover:after{ // hover鼠标移上去时应用这个样式
}
.gotop:hover .content{ // 把content设置为可见
  visibility:visible;
}

7.关于标签位置

$(this).offset(): 当前标签离整个屏幕左上角的位置(离顶部和左部)

$(this).postion(): 当前标签离父标签(有多远)的位置

xx.height() 相对于父框不包括边框的高度
xx.weight() 相对于父框 不包括边框的宽度

xx.innerheight :包括边框的高度
xx.innerweight :包括边框的宽度

小小小小例子: 左边框内容随右边框内容变化而变化

<!--uc浏览器显示不了第三章的效果,谷歌可以-->
<html>
<head>
<meta charset='utf8'/>
<title></title>
<style>
.pg-body .catalog{
position:absolute;
top:0px;
width:200px;
bottom:0px;
background-color:#c6cad3;
}
.pg-body .catalog.fixed{
position: fixed;
top:10px;
}
.pg-body .content{
position:absolute;
top:0px;
width:700px;
margin-left:210px;
background-color:#dadee7;
overflow:auto;
}
.pg-body .content .section{
height:500px;
}
</style>
</head>
<body>
<div class='pg-body'>
<div class='catalog'>
<div class='cotalog-item' auto-to='function1'><a>第一章</a></div>
<div class='cotalog-item' auto-to='function2'><a>第二章</a></div>
<div class='cotalog-item' auto-to='function3'><a>第三章</a></div> </div>
<div class='content'>
<div menu='function1' class='section'><h1>第一章</h></div>
<div menu='function2' class='section'><h1>第二章</h></div>
<div menu='function3' class='section'><h1>第三章</h></div> </div>
</div>
<script src='jquery-3.3.1.js'></script>
<script>
window.onscroll=function(){ //窗体每滚动一次就执行一次这个函数
var ws=$(window).scrollTop(); //获取离顶部的高度
if(ws > 50){ // 左边框固定在左侧
$('.catalog').addClass('fixed');
}else{
$('.catalog').removeClass('fixed');
}
$('.content').children().each(function(){ // 循环content里每一章节的标签
var offs=$(this).offset(); // 获取标签离顶部的高度和宽度
var offTop=offs.top; // 获取离顶部的高度
// 如果滑动的距离大于当前标签的距离
var total = offTop+$(this).height();
if(ws>offTop && total > ws){
// 如果滑轮到底部,则最后一个菜单增大
//window的高度 + 滑轮滚动的高度 = 文档的高度
//$(window).height() 窗口(window的高度)高度
//$(window).scrollTop() 滑轮滚动的高度
//$(document).height() 整个页面的高度(长度)
//var win-height = ;
if(ws + $(window).height() == $(document).height()){
$('.catalog').find('div:last-child').css('fontSize','48px').siblings().css('fontSize','12px');
//$('.catalog').children(' :last').css('fontSize','48px').siblings().css('fontSize','12px');
}else{
//当前标标签离顶部高度< 滚动条高度
//当前标签离顶部高度+当前标签的高度>滚动条高度
var t = $(this).attr('menu');
var target='div[auto-to="' + t +'"]';
$('.catalog').children(target).css('fontSize','48px').siblings().css('fontSize','12px');
return;
}
}
});
};
</script>
</body>
</html>

jQuery骚操作3号

有关总结:

$(window).height() : 窗口高度
$(document).height() : 滑轮高度
$('#nid').height() : 标签高度
$(window).crollTop() :右侧滑动轮滑动了多少
$('#nid').crollTop() : 标签的滑动轮滑动了多少

8.jQuery 标签操作

$('#nid').append('<a>ff</a>')   添加一个标签

$('#nid').after('<a>ff</a>')   在标签后添加一个标签

$('#nid').before('<a>ff</a>')   在标签前添加一个标签

$('#nid').empty()   清空标签

$('#nid').remove() 删除整个标签

var ni = $('#nid').detach() 可返回已经删除的nid 标签
$('$container').append(ni) : 可把删除的ni标签添加到container中

9.jQuery函数事件绑定

1.最基本的jQuery事件绑定:页面完全加载完成后才执行事件

1.1

$('li').click(function func(){ // 为每一个li绑定这个事件(批量)
  var temp= = $(this).text(); // 但在后面添加进来的不会被绑定事件
  alert(temp);
});

1.2

$('li').bind('click',function(){
  //与上面的绑定方式一毛一样
});

2.文档准备好就绪之后就执行,而不是js在页面完全加载出来才执行

2.1

$(document).ready(function(){
  // 当前文档结构准备好了(标签都加载出来了),但是页面(标签内容)还没有完全加载出来
});

2.2

$(function(){

});

3.特殊的绑定方式:委托,适合批量事件绑定

$(function(){ // 原理:当事件触发的时候才零时绑定上
  $('ul').delegate('li','click',function(){ // 就算后面再添加事件进来也会被绑定
    var temp = $(this).text();
    alert(temp);
  })
});

4.移除绑定的事件

两个特殊的关键字:$('li:last').unbind('click');  
         $('ul').delegate('li','click')

5.小例子

<!DOCTYPE html>
<html>
<head lang = 'en'>
<meta charset= 'utf8'>
<title></title> </head>
<body>
<div style='border:1px solid #dddddd; width:600px; position:absolute;'> <!--position绝对位置-->
<div id='title' style = 'background-color:black; height:40px; color:white;'>
标题
</div>
<div style='height:300px;'>
内容
</div>
</div>
<script src='jquery-3.3.1.js'></script>
<script>
$(function(){
//页面加载完成之后自动执行
$('#title').mouseover(function(){ // 给title所在的标签绑定鼠标事件,添加鼠标移动
$(this).css('cursor','move'); // 增加样式
}).mousedown(function(e){ // 拓展:1.mousedown当鼠标事件 2.keydown 当按下键盘的时候的事件
//console.log($(this).offset()); // offset 标签离左上角的位置距离
var _event = e||window.event;
// 原始鼠标横纵坐标位置
var ord_x = _event.clientX;
var ord_y = _event.clientY; var parent_left = $(this).parent().offset().left;
var parent_top = $(this).parent().offset().top;
$(this).bind('mousemove',function(e){ // 当鼠标点击的时候绑定框框
var _new_event = e || window.event; // 鼠标移动距离就是框移动的距离 var new_x = _new_event.clientX;
var new_y = _new_event.clientY; var x = parent_left + (new_x - ord_x);
var y = parent_top + (new_y - ord_y); $(this).parent().css('left',x +'px'); //给新移动的地方添加距离样式
$(this).parent().css('top',y +'px');
});
}).mouseup(function(){
$(this).unbind('mousemove'); // 当鼠标放开的时候绑定解开
});
});
</script>
</body>
</html>

鼠标托动框

10.jQuery扩展方法

jQuery方法一般写为自执行函数,写在js文件里

扩展方法1号:

jQuery.extend({
shushu:function(){
return 'zui_shuai';
},
qinqin:function(){
return 'shaobin';
}
});
var ret = $.shushu(); // 直接通过$.直接访问
alert(ret);

扩展方法2号:

jQuery.fn.extend({
zhaozhao:function(){
return 'mei'
}
});
var ret = $('#id').zhaozhao(); // 选择器扩展访问
alert(ret);

都放在自执行函数里:

(function(arg){
arg.extend({
shushu:function(){
return 'zui_shuai';
},
qinqin:function(){
return 'shaobin';
}
});
arg.fn.extend({
zhaozhao:function(){
return 'mei'
}
});
})(jQuery);

11.底部滚动条(很重要!)

// min-width:980px;当小于980px底部就出现滚动条

<html>
<head>
<meta charset='utf-8'>
</head>
<body>
<div style='min-width:980px;'> // min-width:980px;当小于多少时底部就出现滚动条
<div style='width:20%; float:left'>111111111111111111111</div>
<div style='width:80%; float:left'> 22222222222222222</div>
</div>
</body>
</html>

小知识:

无论是什么样式,只要在最后加上important,就表示此标签优先级最高,它最流弊!!

例:
background-color:red:important;

相关文章