jQuery常用的一些技巧匯總
引子
jQuery的存在,讓學(xué)習(xí)前端開發(fā)的人感到前端越來越容易入門了,用簡單的幾行代碼就可以實現(xiàn)需求,但是,你真的會用jQuery么,當代碼運行后無法看到自己預(yù)期的效果,是不是覺得jQuery出了問題,其實,問題還是出在了自己會不會用上面。下面列舉一些開發(fā)中經(jīng)常遇到的應(yīng)用實例,發(fā)現(xiàn)一下另一個不同的jQuery世界。
回到頂部按鈕
利用jQuery里的animate和scrollTop方法,你便不需要使用插件創(chuàng)建簡單的滾動到頂部動畫。
$('.top').click(function (e) {
e.preventDefault();
$('html, body').animate({scrollTop: 0}, 800);
});
通過scrollTop的值來改變你想要滾動到的位置。其實你就是做了:在接下來的800毫秒中讓頁面滾動,直到它滾動到文檔的頂部。
圖片預(yù)加載
如果你的網(wǎng)頁使用了很多隱藏圖片文件(例如:鼠標懸停展示的圖片),那么圖片的預(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');
判斷圖片是否加載完
有時候你可能需要檢查圖像是否已經(jīng)加載完成,以便于可以繼續(xù)執(zhí)行相應(yīng)的js代碼:
$('img').load(function () {
console.log('image load successful');
});
曾經(jīng)遇到過的使用場景:有些元素需要按圖片的實際尺寸來設(shè)置其大小,以絕對布置方式放置。元素的大小設(shè)置可以在圖片加載完成后計算。
自動修補破損圖像
如果你碰巧發(fā)現(xiàn)在你的網(wǎng)站上發(fā)現(xiàn)破損的圖像鏈接,一個個去替代他們是痛苦的。這個簡單的代碼可以節(jié)省很多的麻煩:
$('img').on('error', function () {
if(!$(this).hasClass('broken-image')) {
$(this).prop('src', 'img/broken.png').addClass('broken-image');
}
});
即使你沒有任何斷開的鏈接,加入這代碼也不會有任何影響。
禁用輸入
有時你可能需要用表單的提交按鈕或者某個輸入框直到用戶執(zhí)行了某個動作(比如:檢查“我已閱讀條款”復(fù)選框)。在你的輸入框上設(shè)置disabled屬性,然后當你需要的時候啟用該屬性:
$('input[type="submit"]').prop('disabled', true);
你需要做的只是需要在輸入框上再次運行prop方法,但設(shè)置的被禁用值是false:
$('input[type="submit"]').prop('disabled', false);
對地不了解prop函數(shù)的jQuery開發(fā)者來說,最常使用的是attr函數(shù),可能開發(fā)很多程序都沒有發(fā)現(xiàn)什么問題,但是,在開發(fā)例如checkbox、radio、select時,會發(fā)現(xiàn)使用attr無法讓屬性生效,以為是jQuery的bug,下面來說說attr和prop的使用建議:
在遇到要獲取或設(shè)置checked,selected,readonly和disabled等屬性時,用prop方法顯然更好
使兩個DIV同等高度
有時你會想要兩個DIV有相同的高度,無論他們都有什么內(nèi)容:
$('.div').css('min-height', $('.main-div').height());
這個例子設(shè)置了DIV的最小高度,這意味著它的高度只可以比這個設(shè)置的高度大而不能小。然而,一個更靈活的方法是循環(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());
});
根據(jù)文本獲取元素
通過jQuery中的contains()選擇器,你能找到一個元素內(nèi)的文本內(nèi)容。如果文本不存在,則這個元素將被隱藏:
var search = $('#search').val();
$('div:not(:contains("' + search + '"))').hide();
可見變化的觸發(fā)
當用戶不再聚焦或者重新聚焦一個標簽時觸發(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!');
}
});
相關(guān)文章
jQuery+ajax讀取json數(shù)據(jù)并按照價格排序示例
這篇文章主要介紹了jQuery+ajax讀取json數(shù)據(jù)并按照價格排序,涉及jQuery基于ajax動態(tài)獲取json文件數(shù)據(jù)并進行數(shù)據(jù)遍歷與排序的相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
淺談ajax在jquery中的請求和servlet中的響應(yīng)
下面小編就為大家分享一篇淺談ajax在jquery中的請求和servlet中的響應(yīng),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
jQuery解析XML文件同時動態(tài)增加js文件的方法
這篇文章主要介紹了jQuery解析XML文件同時動態(tài)增加js文件的方法,涉及jQuery Ajax調(diào)用及返回函數(shù)中增加js文件的相關(guān)使用技巧,需要的朋友可以參考下2015-06-06
getJSON調(diào)用后臺json數(shù)據(jù)時函數(shù)被調(diào)用兩次的原因猜想
近期在做前端開發(fā)時候使用到getJSON調(diào)用后臺json數(shù)據(jù),發(fā)現(xiàn)后臺的函數(shù)被調(diào)用兩次,函數(shù)名稱為getMessages,下面是本人的一些猜想,感興趣的朋友可以參考下2013-09-09
JQUERY的AJAX請求緩存里的數(shù)據(jù)問題處理
這篇文章主要介紹了JQUERY的AJAX請求緩存里的數(shù)據(jù)問題處理的相關(guān)資料,需要的朋友可以參考下2016-02-02

