Query初级
一、介绍、基本写法
什么是JQ:
简化JS的复杂操作
不再需要关心兼容性
提供大量实用方法
如何学习JQ:
选择网页元素
模拟CSS选择元素
独有表达式选择
多种筛选方法
JQ写法 :
//var oDiv = $('#div1');
$('#div1').click(function(){
alert( $(this).html() );
});
});
链式操作:
$(function(){
/*var oDiv = $('#div1');
oDiv.html('hello');
oDiv.css('background','red');
oDiv.click(function(){
alert(123);
});*/
$('#div1').html('hello').css('background','red').click(function(){
alert(123);
取值赋值合体:
$('#div1').html('hello'); //赋值
//alert( $('#div1').html() ); //取值
//alert( $('li').html() ); //当一组元素的时候,取值是一组中的第一个
$('li').html('hello'); //当一组元素的时候,赋值是一组中的所有元素
JQ与JS关系 :
$('#div1').click(function(){
alert( $(this).html() ); //jq的写法
alert( this.innerHTML ); //js的写法
alert( $(this).innerHTML ); //错误的
alert( this.html() ); //错误的
});
$()下的常用方法
even()偶数 角标控制 odd(基数角标控制)
not()这个除外的进行控制
filter() $("div").css("background", "#c8ebcc").filter(".middle").css("border-color", "red"); $('li').filter(':even').css('background-color', 'red');
next()下一个角标
prev()上一个兄弟节点
find()选择子元素中的
eq() 第几个元素比如很多的li第一个进行控制
index() 这个元素在所以兄弟的位置
attr()设置被选元素的属性和值。 $(selector).attr(attribute,function(index,oldvalue))
gt()下标大于多少的元素进行控制
lt()同上 但是是小于
header()选取的是h1h2h3h4h5h6的
animated()选取正在执行动画的元素
slice(1,5)意思就是说 第二个到第五个进行操作控制
has()指定标签里的文本内容
contains()包含某个内容的进行控制
empty()不包含子元素或者文本内容的进行控制
parent()选择有子元素或者文本内容的标签进行控制
hidden():不可见元素选择器 div{display:none;} $((":hidden").html())一大段 比如加个div:hidden就是告知div隐藏的
visible()可见元素
自定义标签 <div a="b"> $(div[a="b"]).css()
一个a 也能操作
map()将一组元素转出其他的元素 看手册
is()判断是不是布尔值 比如我加点击 点击了是true就执行
first-chil()父元素的第一个子元素
last-child()父元素的最好一个子元素
only-chile()选择元素中只包含一个元素的父元素
nth-chile(x)选择父元素里第x个子元素 比如div里面有p 那么$("div p:nth-chile(2)").css()
children()选取子元素
addClass()
removeClass()
width()
innerWidth()
outerWidth()
insertBefore()
before()
insertAfter()
after()
appendTo()
append()
prependTo()
prepend()
remove()
on()
off()
scrollTop()
ev pageX which
preventDefault stopPropagation
one()
offset() position()
offsetParent()
val()
size()
each()
hover()
show()
hide()
fadeIn()
fadeOut()
fadeTo()
slideDown()
slideUp()
1、fiter() not() has()
filter() : 过滤,选择某项
not(): filter的反义词,不选择某项,除了某项
$(function(){
//$('div').filter('.box').css('background','red');
$('div').not('.box').css('background','red');
});
filter和not是针对当前元素
has是针对当前元素的子元素
has() : 包含
$(function(){
$('div').has('span').css('background','red');//div中包含span的元素
$('div').filter('.box').css('background','red'); //div中class为box的元素
});
2、next() 、prev()、find()
next()是找下一个兄弟节点,参数具有筛选功能
prev()是找上一个兄弟节点,参数具有筛选功能
find()是选择子元素中的
$('div').find('h2').eq(1).css('background','red');
3、 eq() idnex()
eq():
代表一组元素的下标,从0开始。
index():
$(function(){
alert( $('#h').index() ); //索引就是当前元素在所有兄弟节点中的位置,从0开始
});
4、addClass()、removeClass():
$(function(){
$('div').addClass('box2 box4');
$('div').removeClass('box1');
});
5、width()、innerWidth()、outerWidth()
div{ width:100px; height:100px; background:red; padding:10px; border:10px #000 solid; margin:10px;}
$(function(){
alert( $('div').width() ); //width
alert( $('div').innerWidth() ); //width + padding
alert( $('div').outerWidth() ); //width + padding + border
alert( $('div').outerWidth(true) ); //width + padding + border + margin
});
6、insertBefore()、before()、insertAfter()、after():
$('span').insertBefore( $('div') ); // 动词、把span添加到div前面
$('div').before( $('span') ); //名词、div的前面是span
$('div').insertAfter( $('span') ); // 动词、把div添加到span后面
$('span').after( $('div') ); //名词、 span的后面是div
7、appendTo()、prependTo()、append() 、prepend()
$('div').appendTo( $('span') ); //把div追加到span中的元素的最后
$('span').append( $('div') ); //span中最后面添加的是div
$('div').prependTo( $('span') ); //把div放在span中的元素的最前面
$('span').prepend( $('div') ); //span中最前面添加的是div
8、创建节点
var $iLi = $("<li>香蕉</li>");
$('ul').append($iLi);
9、删除节点:remove()、detach()、empty()
remove():删除节点,返回的是删除的节点,删除完成后,与该节点绑定的事件也都删除
$(function(){ //删除之后,再次点击无反应
$('div').click(function(){
alert(123);
});
var oDiv = $('div').remove();
$('body').append( oDiv );
});
detach() : 跟remove方法一样,只不过会保留删除这个元素的事件操作行为
$(function(){
$('div').click(function(){
alert(123);
});
var oDiv = $('div').detach();
$('body').append( oDiv );
});
三、
1、事件写法:
$('div').click(function(){
alert(123);
});
$('div').on('click',function(){
alert(123);
});
$('div').on('click mouseover',function(){
alert(123);
});
$('div').on({
'click' : function(){
alert(123);
},
'mouseover' : function(){
alert(456);
}
});
触发一次取消该事件:
$('div').on('mouseover',function(){
alert(123);
$('div').off('mouseover');
});
2、scrollTop():滚动距离
$(function(){
$(document).click(function(){
alert( $(window).scrollTop() ); //滚动距离
});
});
3、事件相关细节:无兼容问题、ev、ev.pageX、ev.which、one()、阻止默认事件和阻止冒泡
$('div').click(function(ev){
//ev : event对象
//ev.pageX(相对于文档的) = clientX(相对于可视区)+ scrollTop(滚动距离)
//ev.which = keyCode
ev.preventDefault(); //阻止默认事件
ev.stopPropagation(); //阻止冒泡的操作
return false; //阻止默认事件 + 阻止冒泡的操作
});
one():
$('div').one('click',function(){ //只执行事件一次
alert(123);
});
4、位置操作:offset()、position()
<div id='div1'>
<div id='div2'></div>
</div>
#div1{ width:200px; height:200px; background:red; overflow:hidden; margin:20px; position:absolute;}
#div2{ width:100px; height:100px; background:yellow; margin:30px; position:absolute; left:25px;}
$(function(){
//div2.offsetLeft; //js原生offset距离是指到定位父级的距离,没有定位父级就是到文档的距离
//alert( $('#div2').offset().left ); //获取到文档屏幕的左距离
alert( $('#div2').position().left ); //父级有定位,到有定位的父级的left值,把当前元素转化成类似定位的形式。若父级没有定位,则返回父级元素的margin-left值。
});
5、parent()、offsetParent()
parent() : 获取父级
offsetParent() : 获取有定位的父级
6、val()、size()、each()
$(function(){
alert( $('input').val() ); //获取value值
$('input').val(456); //修改value值
alert( $('li').size() ); //获取元素的个数,像length
$('li').each(function(i,elem){ //遍历。一参:下标 ;二参 : 每个元素
$(elem).html(i);
});
});
7、hover() hide() show() fadeIn() fadeOut() fadeTo() slideUp() slideDown()
$(function(){
$('#div1').hover(function(){ //参数为两个函数,鼠标移入和移出
//$('#div2').hide(3000); //隐藏,参数为毫秒,默认400
//$('#div2').fadeOut(1000); //淡出,变透明
//$('#div2').slideUp();//由下向上缩短隐藏
$('#div2').fadeTo(1000,0.5);// 两个参数分别为时间和不透明度
},function(){
//$(this).css('background','red');
//$('#div2').show(3000);//显示
//$('#div2').fadeIn(1000);//淡入,变不透明
//$('#div2').slideDown();//由上向下延伸显示
$('#div2').fadeTo(1000,1);// 两个参数分别为时间和不透明度
});
});
JQuery 高级
一、基础方法
基础方法扩充
get() : 下标和length属性
outerWidth() : 针对隐藏元素和参数true
text() : 合体的特例
remove() : detach()
$() : $(document).ready()
parents() closest()
siblings()
nextAll() prevAll()
parentsUntil() nextUntil() prevUntil()
clone()
wrap() wrapAll() wrapInner() unwrap()
add() slice()
serialize() serializeArray()
animate()
stop()
delay()
delegate() undelegate()
trigger()
ev.data ev.target ev.type
1、get()
get() : 就是把JQ转成原生JS,不带参数表示集合,参数为索引值,带参数表示哪一个
$(function(){
alert( $('#div1').get(0).innerHTML );
for(var i=0;i<$('li').length;i++){ //jquery本身有length属性
$('li').get(i).style.background = 'red';
//$('li')[i].style.background = 'red';// [i]和get()方法一样
}
});
2、outerWidth()与原生的区别
outerWidth():包括width和innerWidth都能获取隐藏元素
offsetWidth : 是获取不到隐藏元素的值
$(function(){
alert( $('#div1').get(0).offsetWidth );
alert( $('#div1').outerWidth() );
});
3、text() 和 html() 的区别
$(function(){
alert( $('div').html() );//只获取一组元素第一个
$('div').html('文本'); //可以修改文本内容,修改的是所有的元素标签
$('div').html('<li>lilili</li>');//可以修改标签, 修改是修改所有元素的标签
alert( $('div').text() ); //会获取所有的内容(特例)
$('div').text('<h3>h3</h3>'); //不能修改标签,只能修改集合中所有文本内容
});
4、parents()、closest()
parents() : 获取当前元素的所有祖先节点,参数就是筛选功能
closest() : 获取最近的指定的祖先节点(包括当前元素自身),必须要写筛选的参数,只能找到一个元素
$(function(){
//$('#div2').parents('.box').css('background','red');//所有class为box的元素都变红
$('#div2').closest('.box').css('background','red'); //最近的一个class为box的祖先节点,也包括自己。
});
5、siblings()、nextAll() 、prevAll()、parentsUntil()、nextUntil()、prevUntil()
siblings() : 找所有的兄弟节点,参数也是筛选功能
nextAll() : 下面所有的兄弟节点,参数也是筛选功能
prevAll() : 上面所有的兄弟节点
parentsUntil(): 截止到哪一个祖先节点,不包括截止的那一个
nextUntil(): 截止到哪一个下面的兄弟节点,不包括截止的那一个
prevUntil(): 截止到哪一个上面的兄弟节点,不包括截止的那一个
$(function(){
$('span').nextUntil('h2').css('background','red'); //不包括h2
});
6、clone()
$(function(){
//$('div').appendTo( $('span') );
//$('span').get(0).appendChild( $('div').get(0) );
//clone() : 不带参数时,只复制节点不复制它的事件;接收一个参数true ,作用可以复制之前的事件操作行为
$('div').click(function(){
alert(123);
});
$('div').clone(true).appendTo( $('span') );
});
7、wrap() 、wrapAll() 、wrapInner()、unwrap()
//wrap() : 包装 ,对指定的一组元素单个单个的包装
//wrapAll() : 整体包装,把指定的一组元素整体包装
//wrapInner() : 内部包装,在指定元素内部进行包装
//unwrap() : 删除包装 ( 删除父级 : 不包括body )
$(function(){
//$('span').wrapInner('<div>'); // 参数一定要加标签符号
$('span').unwrap();
});
8、add() 增加元素
$(function(){
var elem = $('div');
var elem2 = elem.add('span');
elem.css('color','red');
elem2.css('background','yellow');
});
9、slice() 截取元素
$(function(){
$('li').slice(1,4).css('background','red'); //截取第二个到第四个 [1,4)
});
10、数据串联化: serialize()、serializeArray()
<form>
<input type="text" name="a" value="1">
<input type="text" name="b" value="2">
<input type="text" name="c" value="3">
</form>
$(function(){
console.log($('form').serialize()); //string类型 : a=1&b=2&c=3
console.log( $('form').serializeArray() );
/*
JSON类型:
[
{ name : 'a' , value : '1' },
{ name : 'b' , value : '2' },
{ name : 'c' , value : '3' }
]
*/
});
11、animate() :
第一个参数 : {} 运动的值和属性
第二个参数 : 时间(运动快慢的) 默认 : 400
第三个参数 : 运动形式 只有两种运动形式 ( 默认 : swing(慢快慢) 、linear(匀速) )
第四个参数 : 回调函数
$(function(){
$('#div1').click(function(){
$(this).animate({width : 300 , height : 300} , 4000 , 'linear',function(){
alert(123);
});
$('#div2').animate({width : 300 , height : 300} , 4000 , 'swing');
});
});
12、stop()、finish()、delay()
$(function(){
$('#div1').click(function(){
//回调函数可以改写成链式操作
$(this).animate({width : 300} , 2000 , 'linear',function(){
$(this).animate({height : 300});
});
$(this).animate({width : 300} , 2000).animate({height : 300} , 2000);
// delay() : 延迟执行 delay(1000): 延迟1秒后执行后续操作
$(this).animate({width : 300} , 2000).delay(1000).animate({height : 300} , 2000);
});
$('#div2').click(function(){
//$('#div1').stop(); //默认 : 只会阻止当前运动
//$('#div1').stop(true); //阻止当前和后续的运动
//$('#div1').stop(true,true); //可以立即停止到当前运动指定的目标点
$('#div1').finish(); //立即停止到所有(当前和后续操作)指定的目标点
});
});
13、事件委托:delegate()、undelegate()
$(function(){
//这种做法还要遍历每个li,影响性能
$('li').on('click',function(){
this.style.background = 'red';
});
//事件委托:利用事件冒泡,好处:提高性能、后续动态添加的元素也有事件操作
$('ul').delegate('li','click',function(){ // 第一个参数是事件实际触发的对象
this.style.background = 'red';
// $('ul').undelegate(); 取消事件委托
});
});
14、主动触发:trigger()
$(function(){
$('#div1').on('click',function(){
alert(123);
});
$('#div1').trigger('click'); //主动触发 click事件
$('#div1').on('show',function(){
alert(123);
});
$('#div1').on('show',function(){
alert(456);
});
$('#div1').trigger('show'); //主动触发 自定义show所有事件的操作
});
15、事件的细节:ev.data 、ev.target 、ev.type
$(function(){
$('#div1').on('click',{name:'hello'},function(ev){
alert(ev.data.name); // 事件中数据:hello
alert( ev.target ); // 事件操作的对象:div
alert( ev.type ); //事件操作类型 :click
});
});
二、工具方法
$下的常用方法:不是$()
type()
trim()
inArray()
proxy()
noConflict()
parseJSON()
makeArray()
ajax() : json形式的配置参数
url success
error contentType
data type
dataType cache timeout
抽象出来的方法:
get()
post()
getJSON()
支持jsonp的形式:指定?callback=?
插件:
$
$.extend
$.fn
$.fn.extend
深入:
$.Callbacks() : 回调对象
deferred() : 延迟对象
$.hodeReady() : 持有和释放ready
$.dequeue() : 执行队列
$.support : 功能检测
16、$、$.type
//$().css() $().html() $().val() : 只能给JQ对象用
//$.xxx() $.yyy() $.zzz() : 不仅可以给JQ用,也可以给原生JS用 : 叫做工具方法
$(function(){
//var a = null;
//$.type() : 也是判断类型
alert( typeof a ); // js原生
alert( $.type(a) ); // 比原生的类型细分的深
});
17、$.trim()
$(function(){
var str = ' hello ';
alert('('+$.trim(str)+')'); // 去掉hello前后的空格 (hello)
});
18、$.inArray()
//inArray() : 类似于 indexOf
$(function(){
var arr = ['a','b','c','d'];
alert( $.inArray('b',arr) ); // 返回数组中的索引,没有找到返回 -1 ,相当于indexOf
});
19、$.proxy()
$(function(){
//proxy() : 改变this指向的
function show(n1,n2){
alert(n1);
alert(n2);
alert(this);
}
//show();
$.proxy(show , document)(3,4); // 在后面的括号中传参,立即执行
$.proxy(show , document,3,4)( ); //也可在$.proxy()中传参
$(document).click( $.proxy(show,window,3,4) );
//在$.proxy()中传参,若在后面添加一个()并在括号里传参,页面刷新后立即执行
});
20、$.noConflict()
防止jQuery中 $ 冲突的
var mao = $.noConflict(); //把mao改成 jQuery 中 $ 的作用
var $ = 10; //仅仅是一个变量
mao(function(){
mao('body').css('background','red');
});
21、$.parseJSON()
将字符串类型转成json类型
var str = '{"name":"hello"}';
console.log($.parseJSON( str ).name); //hello
22、$.makeArray()
将类数组转化成数组,可以具备数组的方法
var aDiv = document.getElementsByTagName('div'); //类数组
$.makeArray(aDiv).push(1);
23、ajax() !看文档!!!
$.ajax({
url : 'xxx.php',
data : 'name=hello&age=20',
type : 'POST',
success : function(data){
alert(1);
},
error : function(){
alert(2);
}
});
$.get('xxx.php',function(){
});
$.post('xxx.php',function(){
});
$.getJSON('xxx.php?callback=?',function(data){
data ..
});
随机({});
········
24、扩展插件:$.extend、$.fn.extend
<script src="jquery-1.10.1.min.js"></script>
<script>
//$.extend : 扩展工具方法下的插件形式 $.xxx() $.yyy()
//$.fn.extend : 扩展到JQ对象下的插件形式 $().xxx() $().yyy()
//写成JSON形式:
$.extend({
leftTrim : function(str){
return str.replace(/^\s+/,'');
},
rightTrim : function(){},
aaa : function(){
alert(1);
},
bbb : function(){}
});
$.fn.extend({
drag : function(){
//this : $('#div1')
var disX = 0;
var disY = 0;
var This = this;
this.mousedown(function(ev){
disX = ev.pageX - $(this).offset().left;
disY = ev.pageY - $(this).offset().top;
$(document).mousemove(function(ev){
This.css('left' , ev.pageX - disX);
This.css('top' , ev.pageY - disY);
});
$(document).mouseup(function(){
$(this).off();
});
return false;
});
},
aaa : function(){
alert(2);
}
});
</script>
<script>
//$.trim()
//$.leftTrim()
var str = ' hello ';
alert( '('+$.leftTrim(str)+')' ); // 只清除了左空格
$(function(){
$('#div1').drag(); //拖拽
});
$.aaa(); // 1
$().aaa(); //2
</script>
<div id="div1"></div>
- jq 笔记
http://bbs.miaov.com/forum.php?mod=forumdisplay&fid=40 2014.10.10jquery 2.0 不兼容ie 6 7 8,以上更适合做移动 ...
- JQ笔记
参数形式$("input:text",document.forms[0])选择form[0]所有input=text$("<p>123</p>&q ...
- hibernate笔记加强版
hibernate 一. hibernate介绍 hibernate事实上就是ormapping框架,此框架的作用就是简单话数据库的操作. hibernate就是将用户提交的代码.參照持久化类配置文件 ...
- Ajax笔记-加强版
AJAX : Asynchronous JavaScript and XML 异步JavaScript和XML 用javascript异步形式去操作xml 进行数据交互 节省用户操作,时间 ...
- CSS3笔记-加强版
属性选择器: E[attr]只使用属性名,但没有确定任何属性值 E[attr="value"]指定属性名,并指定了该属性的属性值 E[attr~="value&quo ...
- Bootstrap笔记-加强版
1.bootstrap引入: <!DOCTYPE html><html lang="zh-cn"><head><meta charset= ...
- JS笔记加强版3
JS 面向对象及组件开发 JS的面向对象: 1.什么是面向对象编程 用对象的思想去写代码,就是面向对象编程 过程式写法 面向对象写法 我们一直都在使用对象 数组 Array 时间 Date ...
- HTML5笔记-加强版
新增的语法结构表单验证 1.新的页面结构以及宽松的语法规范:<!doctype html> <meta charset=“utf-8”/> 2.新的结构化元素:语义化标签: ...
- jq学习笔记(二)
jq笔记-dom篇-慕课网学习笔记 1.jQuery节点创建与属性的处理 创建元素节点: 1.$("<div></div>") 创建为本节点: 1.$(&q ...
随机推荐
- baidu网盘下载神器 Pandownload
最近百度网盘超级会员到期,经同学的推荐,我最近发现了一个特别NB的工具pandownload,官方说是能够破解加速,经过使用确实能够达到很快的下载速度. 这里附上官方的下载网站 http://pand ...
- Linux系统LVS搭建笔记
因为客户是国有企业,且一次性购买了14台服务器(16核),14台中暂且先用8台,其中LVS使用5台,NFS一台主要为了共享WEB系统(多台电脑的1.5T的硬盘容量浪费了).MySQL两台,Memcac ...
- c# 调用c++dll二次总结
1.pinvoke结构不对称,添加语句(网上有) 2.含回调函数,成员参数的结构体必须完全,尽管自己用不到. 3.加深对c++指针的理解.一般情况下,类型加*等效于c++中的ref.但对于short* ...
- wamp上能够访问jsp(未解决 游客勿看)
Windows下使用apache的jk_mod连接WAMP和Tomcat 发表于 2013 年 4 月 29 日 由 www.tonitech.com的站长 | 暂无评论 | Apache,Windo ...
- Storm事务Topology的接口介绍
ITransactionalSpout 基本事务Topology的Spout接口,内含两部分接口:协调Spout接口以及消息发送Blot接口. TransactionalSpoutBatchExe ...
- Haproxy + Rabbit 集群 简要介绍
# 两台主机都安装上rabbitMQ yum install -y rabbitmq-server # 两台主机都配置/etc/hosts文件 192.168.23.10 rabbitmq1 19 ...
- selenium 概念及练习 !
1.selenium中如何判断元素是否存在? 2.selenium中hidden或者是display = none的元素是否可以定位到? 3.selenium中如何保证操作元素的成功率?也就是说如何保 ...
- 西南大学校园网客户端共享网络之路由器开wifi
1年前出了NetKeeper,让寝室只能一个人用一个账号,而且,在寝室平板手机什么的只能靠360wifi什么的来维持了,电脑一直不能关,确实让人不爽. 最近学校又出台了swu-wifi-dorm来让寝 ...
- 如何在java中实现跨线程的通讯
一般而言,如果没有干预的话,线程在启动之后会一直运行到结束,但有时候我们又需要很多线程来共同完成一个任务,这就牵扯到线程间的通讯. 如何让两个线程先后执行?Thread.join方法 private ...
- 九度-题目1195:最长&最短文本
http://ac.jobdu.com/problem.php?pid=1195 题目描述: 输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出 ...