分享15個(gè)大家都熟知的jquery小技巧
幫助提高你jQuery應(yīng)用的15個(gè)大家都熟知的jquery小技巧,分享給大家
- 回到頂部按鈕
- 圖片預(yù)加載
- 判斷圖片是否加載完
- 自動(dòng)修補(bǔ)破損圖像
- Hover切換class類(lèi)
- 禁用輸入
- 停止正在加載的鏈接
- toggle fade/slide
- 簡(jiǎn)單的手風(fēng)琴
- 使兩個(gè)DIV同等高度
- 在瀏覽器標(biāo)簽/新窗口打開(kāi)外部鏈接
- 根據(jù)文本獲取元素
- 可見(jiàn)變化的觸發(fā)
- Ajax調(diào)用錯(cuò)誤處理
- 鏈?zhǔn)讲僮?br />
1、回到頂部按鈕
利用jQuery里的animate和scrollTop方法,你便不需要使用插件創(chuàng)建簡(jiǎn)單的滾動(dòng)到頂部動(dòng)畫(huà)。
// Back to top
$('.top').click(function (e) {
e.preventDefault();
$('html, body').animate({scrollTop: 0}, 800);
});
<!-- Create an anchor tag -->
<a class="top" href="#">Back to top</a>
通過(guò)scrollTop的值來(lái)改變你想要滾動(dòng)到的位置。其實(shí)你就是做了:在接下來(lái)的800毫秒中讓頁(yè)面滾動(dòng),直到它滾動(dòng)到文檔的頂部。
備注:來(lái)看一些scrollTop的調(diào)皮行為 。
2、圖片預(yù)加載
如果你的網(wǎng)頁(yè)使用了很多隱藏圖片文件(例如:鼠標(biāo)懸停展示的圖片),那么圖片的預(yù)加載是有意義的:
$.preloadImages = function () {
for (var i = 0; i < arguments.length; i++) {
$('<img>').attr('src', arguments[i]);
}
};
$.preloadImages('img/hover-on.png', 'img/hover-off.png');
3、判斷圖片是否加載完
有時(shí)候你可能需要檢查圖像是否已經(jīng)加載完成,以便于可以繼續(xù)執(zhí)行相應(yīng)的js代碼:
$('img').load(function () {
console.log('image load successful');
});
你還可以檢查一個(gè)特定的圖片是否加載完并且被帶有Id或者class的<img>標(biāo)簽代替。
4、自動(dòng)修補(bǔ)破損圖像
如果你碰巧發(fā)現(xiàn)在你的網(wǎng)站上發(fā)現(xiàn)破損的圖像鏈接,一個(gè)個(gè)去替代他們是痛苦的。這個(gè)簡(jiǎn)單的代碼可以節(jié)省很多的麻煩:
$('img').on('error', function () {
if(!$(this).hasClass('broken-image')) {
$(this).prop('src', 'img/broken.png').addClass('broken-image');
}
});
即使你沒(méi)有任何斷開(kāi)的鏈接,加入這代碼也不會(huì)有任何影響。
5、Hover切換class類(lèi)
比方說(shuō),當(dāng)用戶將鼠標(biāo)懸停在你頁(yè)面上的元素時(shí),你想改變其視覺(jué)效果。當(dāng)用戶鼠標(biāo)懸停在元素上,你可以在該元素上添加一個(gè)class類(lèi),當(dāng)鼠標(biāo)停止懸停事件時(shí)移除此class類(lèi):
$('.btn').hover(function () {
$(this).addClass('hover');
}, function () {
$(this).removeClass('hover');
});
如果你想要一個(gè)更簡(jiǎn)單的方式使用toggleClass方法,則僅僅需要添加必要的CSS:
$('.btn').hover(function () {
$(this).toggleClass('hover');
});
備注:CSS在這種情況下使用是一個(gè)快速的解決方案,但要知道這點(diǎn)知識(shí)依舊是值得去了解下的。
6、禁用輸入
有時(shí)你可能需要用表單的提交按鈕或者某個(gè)輸入框直到用戶執(zhí)行了某個(gè)動(dòng)作(比如:檢查“我已閱讀條款”復(fù)選框)。在你的輸入框上設(shè)置disabled屬性,然后當(dāng)你需要的時(shí)候啟用該屬性:
你需要做的只是需要在輸入框上再次運(yùn)行prop方法,但設(shè)置的被禁用值是false:
7、停止正在加載的鏈接
有時(shí)你不想鏈接到特定的網(wǎng)頁(yè)或者重新載入頁(yè)面;你可能想讓他們做一些其他事情,如觸發(fā)一些其他的腳本。這是防止違約行動(dòng)的技巧:
$('a.no-link').click(function (e) {
e.preventDefault();
});
8、toggle fade/slide
滑動(dòng)和淡入/淡出 是我們?cè)趈Query中經(jīng)常大量使用的動(dòng)畫(huà)。你可能僅僅想在用戶做某些點(diǎn)擊事件的時(shí)候顯示一個(gè)元素,這時(shí)候需要淡入/淡出或者滑動(dòng)方法。但是如果你需要那個(gè)元素在你第一次點(diǎn)擊的時(shí)候出現(xiàn),在第二次點(diǎn)擊的時(shí)候消失,代碼如下:
// Fade
$('.btn').click(function () {
$('.element').fadeToggle('slow');
});
// Toggle
$('.btn').click(function () {
$('.element').slideToggle('slow');
});
9、簡(jiǎn)單的手風(fēng)琴
這是個(gè)簡(jiǎn)單快速的方法創(chuàng)建一個(gè)手風(fēng)琴:
// Close all panels
$('#accordion').find('.content').hide();
// Accordion
$('#accordion').find('.accordion-header').click(function () {
var next = $(this).next();
next.slideToggle('fast');
$('.content').not(next).slideUp('fast');
return false;
});
通過(guò)添加這個(gè)腳本,你需要做的則是必要的HTML操作在你的頁(yè)面上。
10、使兩個(gè)DIV同等高度
有時(shí)你會(huì)想要兩個(gè)DIV有相同的高度,無(wú)論他們都有什么內(nèi)容:
這個(gè)例子設(shè)置了DIV的最小高度,這意味著它的高度只可以比這個(gè)設(shè)置的高度大而不能小。然而,一個(gè)更靈活的方法是循環(huán)的一組元素,并設(shè)置將最高元素的高度作為高度:
var $columns = $('.column');
var height = 0;
$columns.each(function () {
if ($(this).height() > height) {
height = $(this).height();
}
});
$columns.height(height);
如果你想要所有的列有相同的高度:
var $rows = $('.same-height-columns');
$rows.each(function () {
$(this).find('.column').height($(this).height());
});
11、在瀏覽器標(biāo)簽/新窗口打開(kāi)外部鏈接
在新的瀏覽器標(biāo)簽或窗口中打開(kāi)外部鏈接,并確保在同一個(gè)標(biāo)簽或窗口中打開(kāi)的是同一個(gè)源的鏈接:
$('a[href^="http"]').attr('target', '_blank');
$('a[href^="http://"]').attr('target', '_blank');
$('a[href^="' + window.location.origin + '"]').attr('target', '_self');
備注:window.location.origin 在IE10不工作。
12、根據(jù)文本獲取元素
通過(guò)jQuery中的contains()選擇器,你能找到一個(gè)元素內(nèi)的文本內(nèi)容。如果文本不存在,則這個(gè)元素將被隱藏:
var search = $('#search').val();
$('div:not(:contains("' + search + '"))').hide();
13、可見(jiàn)變化的觸發(fā)
當(dāng)用戶不再聚焦或者重新聚焦一個(gè)標(biāo)簽時(shí)觸發(fā)javascript腳本:
$(document).on('visibilitychange', function (e) {
if (e.target.visibilityState === "visible") {
console.log('Tab is now in view!');
} else if (e.target.visibilityState === "hidden") {
console.log('Tab is now hidden!');
}
});
14、Ajax調(diào)用錯(cuò)誤處理
當(dāng)一個(gè)Ajax調(diào)用返回一個(gè)404或500的錯(cuò)誤時(shí),將執(zhí)行該錯(cuò)誤處理。如果該處理未定義,則其他jQuery代碼便可能不會(huì)執(zhí)行了。定義一個(gè)全局Ajax錯(cuò)誤處理程序:
$(document).ajaxError(function (e, xhr, settings, error) {
console.log(error);
});
15、鏈?zhǔn)讲僮?/strong>
jQuery允許通過(guò)鏈?zhǔn)讲僮鱽?lái)減輕反復(fù)查詢DOM和創(chuàng)建多個(gè)jQuery對(duì)象的過(guò)程。比如下面是你的方法調(diào)用:
$('#elem').show();
$('#elem').html('bla');
$('#elem').otherStuff();
這代碼可以通過(guò)鏈?zhǔn)酱蟠蟮奶岣撸?/p>
$('#elem')
.show()
.html('bla')
.otherStuff();
另一個(gè)方法是在一個(gè)可變的元素緩存($作為前置):
var $elem = $('#elem');
$elem.hide();
$elem.html('bla');
$elem.otherStuff();
鏈?zhǔn)胶蚸Query緩存方法是最好的做法,導(dǎo)致更短、更快的代碼。
以上就是本文的全部?jī)?nèi)容,希望幫助大家提高jQuery應(yīng)用能力。
- 了解jQuery技巧來(lái)提高你的代碼(個(gè)人覺(jué)得那個(gè)jquery的手冊(cè)很不錯(cuò))
- 關(guān)于jQuery UI 使用心得及技巧
- 關(guān)于jQuery新的事件綁定機(jī)制on()的使用技巧
- jquery的選擇器的使用技巧之如何選擇input框
- jquery操作復(fù)選框(checkbox)的12個(gè)小技巧總結(jié)
- 編寫(xiě)高效jQuery代碼的4個(gè)原則和5個(gè)技巧
- jQuery提交多個(gè)表單的小技巧
- jquery中EasyUI使用技巧小結(jié)
- jquery性能優(yōu)化高級(jí)技巧
- jQuery前端開(kāi)發(fā)35個(gè)小技巧
相關(guān)文章
jquery彈出框插件jquery.ui.dialog用法分析
這篇文章主要介紹了jquery彈出框插件jquery.ui.dialog用法,結(jié)合實(shí)例形式分析了彈出框插件jquery.ui.dialog的功能、下載、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-08-08
jQuery實(shí)現(xiàn)個(gè)性翻牌效果導(dǎo)航菜單的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)個(gè)性翻牌效果導(dǎo)航菜單的方法,實(shí)例分析了jQuery操作animate、css及鼠標(biāo)事件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
基于HTML+CSS+JS實(shí)現(xiàn)增加刪除修改tab導(dǎo)航特效代碼
這篇文章主要介紹了基于HTML+CSS+JS實(shí)現(xiàn)增加刪除修改tab導(dǎo)航特效代碼的相關(guān)資料,非常不錯(cuò),需要的朋友可以參考下2016-08-08
jQuery使用addClass()方法給元素添加多個(gè)class樣式
這篇文章主要介紹了jQuery使用addClass()方法給元素添加多個(gè)class樣式的方法,實(shí)例分析了addClass方法的使用技巧及添加多個(gè)樣式的實(shí)現(xiàn)方法,需要的朋友可以參考下2015-03-03
AspNet中使用JQuery上傳插件Uploadify詳解
Uploadify是JQuery的一個(gè)上傳插件,實(shí)現(xiàn)的效果非常不錯(cuò),帶進(jìn)度顯示。不過(guò)官方提供的實(shí)例時(shí)php版本的,本文將詳細(xì)介紹Uploadify在Aspnet中的使用2015-05-05
jQuery插件zTree實(shí)現(xiàn)清空選中第一個(gè)節(jié)點(diǎn)所有子節(jié)點(diǎn)的方法
這篇文章主要介紹了jQuery插件zTree實(shí)現(xiàn)清空選中第一個(gè)節(jié)點(diǎn)所有子節(jié)點(diǎn)的方法,涉及jQuery樹(shù)形插件zTree針對(duì)節(jié)點(diǎn)的遍歷與移除相關(guān)操作技巧,需要的朋友可以參考下2017-03-03
jQuery如何實(shí)現(xiàn)點(diǎn)擊頁(yè)面獲得當(dāng)前點(diǎn)擊元素的id或其他信息
點(diǎn)擊頁(yè)面獲得當(dāng)前點(diǎn)擊元素的id或者其他信息,使用jquery可以輕松做到這一點(diǎn),下面有個(gè)不錯(cuò)的示例,希望對(duì)大家有所幫助2014-01-01
jQuery插件ajaxfileupload.js實(shí)現(xiàn)上傳文件
這篇文章主要為大家詳細(xì)介紹了jQuery插件ajaxfileupload.js實(shí)現(xiàn)上傳文件的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
jQuery+CSS3實(shí)現(xiàn)樹(shù)葉飄落特效
本文給大家分享的是一段使用jQuery+CSS3實(shí)現(xiàn)樹(shù)葉飄落特效的代碼,效果非常不錯(cuò),分享給大家,希望大家能夠喜歡2015-02-02

