jQuery Basic

jquery 简介
用法
FAQ
简介
- Javascript Library Created in 2006
- `Write less, do more`
- 在大多数的网站中使用
- 开源项目

用法
DOM操作
事件处理
Ajax
动画
DOM 操作
Classes操作
Data操作
Attribute操作
Class 操作
// <div class="demo"></div>
$('.demo').addClass('test');
// <div class="demo test"></div>
http://api.jquery.com/addClass/
// <div class="demo test"></div>
$(element).removeClass('test');
// <div class="demo"></div>
Class 操作
// <div class="demo"></div>
$('div').hasClass('demo'); // return true
http://api.jquery.com/toggleClass/
// <div class="demoiv>
$('div').toggleClass('test');
// <div class="demo test"></div>
$('div').toggleClass('test');
// <div class="demo"></div>
值操作
// <input value="test">
var value = $('div').val(); // 返回test
$('div').val('something else');
// <input vaue="something else">
http://api.jquery.com/val/
// <div>test</div>
var value = $('div').text(); // 返回test
$('div').text('something else');
// <div>something else</div>
节点本身的移除
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
<script>
$(".hello").remove();
</script>
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
http://api.jquery.com/remove/
有选择移除节点
/*
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
*/
$("div").remove(':contains('hello')');
/*
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
*/
http://api.jquery.com/remove/
移除节点属性
// <a title='test'>apple</a>
$('a').removeAttr('title');
// <a>apple</a>
http://api.jquery.com/removeAttr/
设置节点属性
<img href="http://www.baidu.com"/>
http://api.jquery.com/attr/
$('img').attr(href); => 'http://www.baidu.com'
$('img').attr(href, 'http://www.meituan.com'); => <img href="http://www.meituan.com"/>
值插入
<div class="container">
<div class="inner">Hello</div>
</div>
http://api.jquery.com/after
$( ".container" ).after( "<p>Test</p>" );
<div class="container">
<div class="inner">Hello</div>
<p>Test</p>
</div>
值插入其它方式
`$(element).before\append\appendTo\insertAfter` 和 `after`的用法是一致的
设置节点的html片段
<div class="demo-container">
<div class="demo-box">Demonstration Box</div>
</div>
http://api.jquery.com/html/
$(".demo-container").html('only text');
<div class="demo-container">test</div>
节点间的遍历
<div class="parent">
<div class="child"></div>
</div>
$('.parent').children().css('color', 'red');
<div class="parent" style="color:red">
<div class="child" style="color:red"></div>
</div>
$('.child').parent().css('color', 'red');
http://api.jquery.com/category/traversing/tree-traversal/
节点间的遍历
<div class="parent">
<div class="child1"></div>
<div class="child2"></div>
</div>
var child1 = $('.parent').find('.child1')
http://api.jquery.com/category/traversing/tree-traversal/
节点间的遍历
http://api.jquery.com/category/traversing/tree-traversal/
$(ele).siblings() => 获取兄弟节点
$(ele).prev() => 获取同层级前一节点
$(ele).next() => 获取同层级后一节点
.
.
.
获取节点上的data值
// <input data-test='1' />
// $('input').data('test') => 1
$(element).data(key);
// <input />
// $('input').data('test', '1') => <input data-test='1' />
$(element).data(key, value);
一般把后端传的值挂在与节点上的data
http://api.jquery.com/category/manipulation/
事件处理

事件委托监听
$("#dataTable tbody").on("click", "tr", function(e) {
// this => e.target
console.log($(this).text());
});
function notify() {
console.log('test')
}
$( "button" ).on("click", notify );
function myHandler( event ) {
alert( event.data.foo );
}
$("p").on( "click", { foo: "bar" }, myHandler );
$(element).on(events [,selector][,data], handler)
http://api.jquery.com/on/
解除事件绑定
function flash() {
$("div").show().fadeOut( "slow" );
}
$( "#bind" ).click(function() {
$( "body" )
.on( "click", "#theone", flash )
.find( "#theone" )
.text( "Can Click!" );
});
$( "#unbind" ).click(function() {
$( "body" )
.off( "click", "#theone", flash )
.find( "#theone" )
.text( "Does nothing..." );
});
$(element).off(events [,selector][,handler])
http://api.jquery.com/off/
只监听一次事件的API
$( "#foo" ).one( "click", function() {
alert( "This will be displayed only once." );
});
// the same as below
$( "#foo" ).on( "click", function( event ) {
alert( "This will be displayed only once." );
$( this ).off( event );
});
$(element).one(events [,data],handler)
http://api.jquery.com/one/
同一类型的其它API
// inspect the change in elememt
$(elememt).change(handler(e){ // .. })
// inspect the click in elememt
$(elememt).click(handler(e){ // .. })
$(element).submit()
$(elememt).hover()
...
http://api.jquery.com/category/events/
Ajax
$.ajax({
method: "POST",
url: "test.html",
data: {
name: "John",
location: "beijing"
},
dataType: 'json', // xml, html, script
success: function (data, textStatus, XHR) {},
error: function (err) {},
complete: function () {},
timeout: 1000
});
有时候是表单传值,逐个去获取表单的值不方便
$('form').serialize()
返回一个表单序列字符串,可用于传输
动画
$(element).animate(cssProperties[,option])
option 包括durations(渐变时间)/effect(效果)/complete(完成以后的回调函数) // 栗子
$(element).fadein(duration[,complete])
$(element).fadeout(duration[,complete])
$(element).fadeToggle(duration[,complete])
$(element).slideDown(duration[,complete])
$(element).slideUp(duration[,complete])
$(element).slideToggle(duration[,complete])
$(element).hide()
$(element).show()
FQA
1. `$()`在jQuery中是什么?
1. `$` 是jQuery对象
2. `$` 集成了很多方法,比如遍历数组的$.each()
3. `$()` 是一个jQuery方法。
- 如果传递进去的是选择器字符串,比如'.className',则返回的是一个包含匹配className元素的jQuery对象
- 如果穿进去的是个html字符串,比如$('<p>test</p>'),则返回一个<p>的jQuery节点,但要注意,这个时候尚未插入到DOM里面
2.如果我们有5个div在页面中,怎么用jQuery选中他们?
$("div") 返回的是一个带有五个节点的数组。
3.在jQuery, id 和 class选择器的区别?
4.你怎么去隐藏一个div?
5.$(document).ready()是什么?为什么我们要用它?
等DOM树load完以后,可以马上执行
6.$(document).ready()与window.onload的区别?
1. onload需要等到其它静态资源onload以后才能执行。
2. ready可以在一个页面多处按序被调用,onload只能调用一次
7.怎么获取标签中被选中的项?
$('[name=NameOfSelectedTag] :selected')
8.我们怎么把一个HTML标签加进页面中?
9. 我们怎么获取和设置标签的属性?
10. document.getElementById('myId')和$('#myId'),哪个更高效?
(-_-)
jQuery Basic & Improvement
By kangxiaojun
jQuery Basic & Improvement
- 820