jQuery 入門級學(xué)習(xí)筆記及源碼
更新時(shí)間:2010年01月22日 16:24:51 作者:
本周公司技術(shù)講座輪到我了,準(zhǔn)備說說現(xiàn)在流行的jQuery,下面是概要提綱,關(guān)鍵是看custom.js,已上傳源碼,程序中“//##”是分段用的,大家可以根據(jù)每一段取消注釋,然后找到相應(yīng)的id或class名查看效果。
jQuery真的很好,有些效果甚至讓我尖叫。而各種插件能實(shí)現(xiàn)你喜歡的效果,這種方式為jQuery的流行奠定了基礎(chǔ),就像那個(gè)crocs鞋子似的。jQuery還有一個(gè)優(yōu)點(diǎn)是達(dá)到了將行為與結(jié)構(gòu)分開的目的。
內(nèi)容概要:
1. 安裝
2. Hello jQuery
3. Find me:使用選擇器和事件
4. Rate me:使用AJAX
5. Animate me(讓我生動(dòng)起來):使用FX (jQuery FX,jQuery UI后的第二個(gè)子庫,強(qiáng)調(diào)動(dòng)畫效果而非UI的外觀模塊,包括對象的消失、出現(xiàn);顏色、大小、位置變換。)
6. Sort me(將我有序化):使用tablesorter插件(表格排序)
custom.js
$(document).ready(function() { //## 簡寫方法:(document).ready可以去掉
## 讓所有“<a>”在點(diǎn)擊時(shí)填出“hello world”
$("a").click(function() {
alert("Hello world");
});
## id是“orderedlist”增加class名為“red”,在core.css有定義
$("#orderedlist").addClass("red");
## id是“orderedlist”下的最后一個(gè)li,鼠標(biāo)經(jīng)過時(shí)會(huì)變色
$("#orderedlist li:last").hover(
function() {
$(this).addClass("green");
},
function() {
$(this).removeClass("green");
}
);
## find() 讓你在已經(jīng)選擇的element中作條件查找,因此 $("#orderedlist).find("li") 就像 $("#orderedlist li")一樣。each()方法迭代了所有的li,并可以在此基礎(chǔ)上作更多的處理。
## 大部分的方法,如addClass(), 都可以用它們自己的 each() 。在這個(gè)例子中, html()用來獲取每個(gè)li的html文本, 追加一些文字,并將之設(shè)置為li的html文本。
$("#orderedlist").find("li").each(function(i) {
$(this).html($(this).html() + " BAM! " + i);
}
);
## 清空所有的input值
$("#reset").click(function() {
$("input").attr("value", "");
});
## 這個(gè)代碼選擇了所有的li元素,然后去除了有ul子元素的li元素。刷新瀏覽器后,所有的li元素都有了一個(gè)邊框,只有ul子元素的那個(gè)li元素例外。
## 請注意體會(huì)方便之極的css()方法,并再次提醒請務(wù)必實(shí)際測試觀察效果,比方說換個(gè)CSS樣式呢?再加一個(gè)CSS樣式呢?
$("li").not("[ul]").css("border", "1px solid black").css("color", "red");
## 這個(gè)代碼給所有帶有name屬性的鏈接加了一個(gè)背景色。[注:在jQuery1.2及以上版本中,@符號應(yīng)該去除]
$("a[@name]").background("#eee");
## 你可能需要選擇一個(gè)有特點(diǎn)href屬性的鏈接,這在不同的瀏覽器下對href的理解可能會(huì)不一致,所以我們的部分匹配("*=")的方式來代替完全匹配("=")
$("a[@href*=bot]").click(function() {
alert("hello world 2");
});
## 這里我們用了一些鏈?zhǔn)奖磉_(dá)法來減少代碼量,而且看上去更直觀更容易理解。像'#faq' 只選擇了一次,利用end()方法,第一次find()方法會(huì)結(jié)束(undone),
## 所以我們可以接著在后面繼續(xù)find('dt'),而不需要再寫$('#faq').find('dt')。
## 在點(diǎn)擊事件中的,我們用 $(this).next() 來找到dt下面緊接的一個(gè)dd元素,這讓我們可以快速地選擇在被點(diǎn)擊問題下面的答案。
$('#faq').find('dd').hide().end().find('dt').click(function() {
var answer = $(this).next();
if (answer.is(':visible')) {
answer.slideUp();
} else {
answer.slideDown();
}
});
## 除了選擇同級別的元素外,你也可以選擇父級的元素??赡苣阆朐谟脩羰髽?biāo)移到文章某段的某個(gè)鏈接時(shí),它的父級元素--也就是文章的這一段突出顯示,試試這個(gè):
$("a").hover(function() {
$(this).parents("p").addClass("highlight");
}, function() {
$(this).parents("p").removeClass("highlight");
});
## AJAX第一次嘗試。首先我們需要一些服務(wù)器端代碼,這個(gè)例子中用到了一個(gè)ASPX文件,讀取rating參數(shù)然后返回rating總次數(shù)和平均數(shù)。
// generate markup
var ratingMarkup = [" Please rate: "];
for (var i = 1; i <= 5; i++) {
ratingMarkup[ratingMarkup.length] = "<a href='#'>" + i + "</a> "; //ratingMarkup是個(gè)數(shù)組
}
// add markup to container and applier click handlers to anchors
$("#rating").append(ratingMarkup.join('')).find("a").click(function(e) { //用join方法返回一個(gè)將數(shù)組所有元素用指定符號連在一起的字符串
e.preventDefault(); //該方法將通知 Web 瀏覽器不要執(zhí)行與事件關(guān)聯(lián)的默認(rèn)動(dòng)作(如果存在這樣的動(dòng)作)。
// send requests
$.post("rate.aspx?rating=" + $(this).html(), {}, function(xml) { //這里要用{}占一個(gè)位
// format result
var result = [
"Thanks for rating, current average: ",
$("average", xml).text(),
", number of votes: ",
$("count", xml).text()
];
// output result
$("#rating").html(result.join(''));
});
});
## 一些動(dòng)態(tài)的效果可以使用 show() 和 hide()來表現(xiàn)。伸縮效果。
$("a").toggle(function() { //toggle雙向開關(guān)
$(".stuff").hide('slow');
}, function() {
$(".stuff").show('fast');
});
## 可以與 animate()聯(lián)合起來創(chuàng)建一些效果,如一個(gè)帶漸顯的滑動(dòng)效果
$("a").toggle(function() {
$(".stuff").animate({
height: 'hide',
opacity: 'hide'
}, 'slow');
}, function() {
$(".stuff").animate({
height: 'show',
opacity: 'show'
}, 'slow');
});
## 使用tablesorter插件(表格排序)
## 幾乎所有的特件都是這樣用的:先include插件的js文件,然后在某些元素上使用插件定義的方法,當(dāng)然也有一些參數(shù)選項(xiàng)是可以配置的
$("#large").tableSorter();
## 這個(gè)表格還可以加一些突出顯示的效果,我們可以做這樣一個(gè)隔行背景色(斑馬線)效果
$("#large").tableSorter({
stripingRowClass: ['odd', 'even'], // Class names for striping supplyed as a array.
stripRowsOnStartUp: true // Strip rows on tableSorter init.
});
});
jquery-starterkit.rar
內(nèi)容概要:
1. 安裝
2. Hello jQuery
3. Find me:使用選擇器和事件
4. Rate me:使用AJAX
5. Animate me(讓我生動(dòng)起來):使用FX (jQuery FX,jQuery UI后的第二個(gè)子庫,強(qiáng)調(diào)動(dòng)畫效果而非UI的外觀模塊,包括對象的消失、出現(xiàn);顏色、大小、位置變換。)
6. Sort me(將我有序化):使用tablesorter插件(表格排序)
custom.js
復(fù)制代碼 代碼如下:
$(document).ready(function() { //## 簡寫方法:(document).ready可以去掉
## 讓所有“<a>”在點(diǎn)擊時(shí)填出“hello world”
$("a").click(function() {
alert("Hello world");
});
## id是“orderedlist”增加class名為“red”,在core.css有定義
$("#orderedlist").addClass("red");
## id是“orderedlist”下的最后一個(gè)li,鼠標(biāo)經(jīng)過時(shí)會(huì)變色
$("#orderedlist li:last").hover(
function() {
$(this).addClass("green");
},
function() {
$(this).removeClass("green");
}
);
## find() 讓你在已經(jīng)選擇的element中作條件查找,因此 $("#orderedlist).find("li") 就像 $("#orderedlist li")一樣。each()方法迭代了所有的li,并可以在此基礎(chǔ)上作更多的處理。
## 大部分的方法,如addClass(), 都可以用它們自己的 each() 。在這個(gè)例子中, html()用來獲取每個(gè)li的html文本, 追加一些文字,并將之設(shè)置為li的html文本。
$("#orderedlist").find("li").each(function(i) {
$(this).html($(this).html() + " BAM! " + i);
}
);
## 清空所有的input值
$("#reset").click(function() {
$("input").attr("value", "");
});
## 這個(gè)代碼選擇了所有的li元素,然后去除了有ul子元素的li元素。刷新瀏覽器后,所有的li元素都有了一個(gè)邊框,只有ul子元素的那個(gè)li元素例外。
## 請注意體會(huì)方便之極的css()方法,并再次提醒請務(wù)必實(shí)際測試觀察效果,比方說換個(gè)CSS樣式呢?再加一個(gè)CSS樣式呢?
$("li").not("[ul]").css("border", "1px solid black").css("color", "red");
## 這個(gè)代碼給所有帶有name屬性的鏈接加了一個(gè)背景色。[注:在jQuery1.2及以上版本中,@符號應(yīng)該去除]
$("a[@name]").background("#eee");
## 你可能需要選擇一個(gè)有特點(diǎn)href屬性的鏈接,這在不同的瀏覽器下對href的理解可能會(huì)不一致,所以我們的部分匹配("*=")的方式來代替完全匹配("=")
$("a[@href*=bot]").click(function() {
alert("hello world 2");
});
## 這里我們用了一些鏈?zhǔn)奖磉_(dá)法來減少代碼量,而且看上去更直觀更容易理解。像'#faq' 只選擇了一次,利用end()方法,第一次find()方法會(huì)結(jié)束(undone),
## 所以我們可以接著在后面繼續(xù)find('dt'),而不需要再寫$('#faq').find('dt')。
## 在點(diǎn)擊事件中的,我們用 $(this).next() 來找到dt下面緊接的一個(gè)dd元素,這讓我們可以快速地選擇在被點(diǎn)擊問題下面的答案。
$('#faq').find('dd').hide().end().find('dt').click(function() {
var answer = $(this).next();
if (answer.is(':visible')) {
answer.slideUp();
} else {
answer.slideDown();
}
});
## 除了選擇同級別的元素外,你也可以選擇父級的元素??赡苣阆朐谟脩羰髽?biāo)移到文章某段的某個(gè)鏈接時(shí),它的父級元素--也就是文章的這一段突出顯示,試試這個(gè):
$("a").hover(function() {
$(this).parents("p").addClass("highlight");
}, function() {
$(this).parents("p").removeClass("highlight");
});
## AJAX第一次嘗試。首先我們需要一些服務(wù)器端代碼,這個(gè)例子中用到了一個(gè)ASPX文件,讀取rating參數(shù)然后返回rating總次數(shù)和平均數(shù)。
// generate markup
var ratingMarkup = [" Please rate: "];
for (var i = 1; i <= 5; i++) {
ratingMarkup[ratingMarkup.length] = "<a href='#'>" + i + "</a> "; //ratingMarkup是個(gè)數(shù)組
}
// add markup to container and applier click handlers to anchors
$("#rating").append(ratingMarkup.join('')).find("a").click(function(e) { //用join方法返回一個(gè)將數(shù)組所有元素用指定符號連在一起的字符串
e.preventDefault(); //該方法將通知 Web 瀏覽器不要執(zhí)行與事件關(guān)聯(lián)的默認(rèn)動(dòng)作(如果存在這樣的動(dòng)作)。
// send requests
$.post("rate.aspx?rating=" + $(this).html(), {}, function(xml) { //這里要用{}占一個(gè)位
// format result
var result = [
"Thanks for rating, current average: ",
$("average", xml).text(),
", number of votes: ",
$("count", xml).text()
];
// output result
$("#rating").html(result.join(''));
});
});
## 一些動(dòng)態(tài)的效果可以使用 show() 和 hide()來表現(xiàn)。伸縮效果。
$("a").toggle(function() { //toggle雙向開關(guān)
$(".stuff").hide('slow');
}, function() {
$(".stuff").show('fast');
});
## 可以與 animate()聯(lián)合起來創(chuàng)建一些效果,如一個(gè)帶漸顯的滑動(dòng)效果
$("a").toggle(function() {
$(".stuff").animate({
height: 'hide',
opacity: 'hide'
}, 'slow');
}, function() {
$(".stuff").animate({
height: 'show',
opacity: 'show'
}, 'slow');
});
## 使用tablesorter插件(表格排序)
## 幾乎所有的特件都是這樣用的:先include插件的js文件,然后在某些元素上使用插件定義的方法,當(dāng)然也有一些參數(shù)選項(xiàng)是可以配置的
$("#large").tableSorter();
## 這個(gè)表格還可以加一些突出顯示的效果,我們可以做這樣一個(gè)隔行背景色(斑馬線)效果
$("#large").tableSorter({
stripingRowClass: ['odd', 'even'], // Class names for striping supplyed as a array.
stripRowsOnStartUp: true // Strip rows on tableSorter init.
});
});
jquery-starterkit.rar
相關(guān)文章
基于jquery實(shí)現(xiàn)的定時(shí)顯示與隱藏div廣告的實(shí)現(xiàn)代碼
有時(shí)候我們需要在jquery中要顯示與隱藏層,很簡單的方法就是直接使用hide與show方法就可以了,但要定時(shí)我們需要結(jié)合setTimeout函數(shù)來實(shí)現(xiàn)2013-08-08jquery ajax的success回調(diào)函數(shù)中實(shí)現(xiàn)按鈕置灰倒計(jì)時(shí)
實(shí)現(xiàn)異步手機(jī)發(fā)送短信成功之后在ajax的success回調(diào)中實(shí)現(xiàn)將發(fā)送按鈕置灰并倒計(jì)時(shí),具體的實(shí)現(xiàn)示例如下,喜歡的朋友可以研究下2013-11-11jQuery滾動(dòng)監(jiān)聽實(shí)現(xiàn)商城樓梯式導(dǎo)航效果
這篇文章主要介紹了jQuery滾動(dòng)監(jiān)聽,實(shí)現(xiàn)商城樓梯式導(dǎo)航,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03jquery1.4后 jqDrag 拖動(dòng) 不可用
jquery 升級到1.4后 jqDrag 拖動(dòng) 不可用的修改方法2010-02-02easyUI 實(shí)現(xiàn)的后臺(tái)分頁與前臺(tái)顯示功能示例
這篇文章主要介紹了easyUI 實(shí)現(xiàn)的后臺(tái)分頁與前臺(tái)顯示功能,結(jié)合實(shí)例形式分析了easyUI 后臺(tái)數(shù)據(jù)交互、分頁與前臺(tái)顯示相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下2020-06-06jQuery 操作option的實(shí)現(xiàn)代碼
js清空option之前清空option ,我的做法是遍歷現(xiàn)有option,將其每個(gè)子元素都置空即可。2011-03-03