国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery常用的一些技巧匯總

2019-11-20 10:20:41
字體:
來源:轉載
供稿:網友

引子

jQuery的存在,讓學習前端開發的人感到前端越來越容易入門了,用簡單的幾行代碼就可以實現需求,但是,你真的會用jQuery么,當代碼運行后無法看到自己預期的效果,是不是覺得jQuery出了問題,其實,問題還是出在了自己會不會用上面。下面列舉一些開發中經常遇到的應用實例,發現一下另一個不同的jQuery世界。

回到頂部按鈕

利用jQuery里的animate和scrollTop方法,你便不需要使用插件創建簡單的滾動到頂部動畫。

$('.top').click(function (e) { e.preventDefault(); $('html, body').animate({scrollTop: 0}, 800);});

通過scrollTop的值來改變你想要滾動到的位置。其實你就是做了:在接下來的800毫秒中讓頁面滾動,直到它滾動到文檔的頂部。

圖片預加載

如果你的網頁使用了很多隱藏圖片文件(例如:鼠標懸停展示的圖片),那么圖片的預加載是有意義的:

$.preloadImages = function () { for (var i = 0; i < arguments.length; i++) { $('<img>').attr('src', arguments[i]); }};$.preloadImages('img/hover-on.png', 'img/hover-off.png');

判斷圖片是否加載完

有時候你可能需要檢查圖像是否已經加載完成,以便于可以繼續執行相應的js代碼:

$('img').load(function () { console.log('image load successful');});

曾經遇到過的使用場景:有些元素需要按圖片的實際尺寸來設置其大小,以絕對布置方式放置。元素的大小設置可以在圖片加載完成后計算。

自動修補破損圖像

如果你碰巧發現在你的網站上發現破損的圖像鏈接,一個個去替代他們是痛苦的。這個簡單的代碼可以節省很多的麻煩:

$('img').on('error', function () { if(!$(this).hasClass('broken-image')) { $(this).prop('src', 'img/broken.png').addClass('broken-image'); }});

即使你沒有任何斷開的鏈接,加入這代碼也不會有任何影響。

禁用輸入

有時你可能需要用表單的提交按鈕或者某個輸入框直到用戶執行了某個動作(比如:檢查“我已閱讀條款”復選框)。在你的輸入框上設置disabled屬性,然后當你需要的時候啟用該屬性:

$('input[type="submit"]').prop('disabled', true);

你需要做的只是需要在輸入框上再次運行prop方法,但設置的被禁用值是false:

$('input[type="submit"]').prop('disabled', false);

對地不了解prop函數的jQuery開發者來說,最常使用的是attr函數,可能開發很多程序都沒有發現什么問題,但是,在開發例如checkbox、radio、select時,會發現使用attr無法讓屬性生效,以為是jQuery的bug,下面來說說attr和prop的使用建議:

在遇到要獲取或設置checked,selected,readonly和disabled等屬性時,用prop方法顯然更好

使兩個DIV同等高度

有時你會想要兩個DIV有相同的高度,無論他們都有什么內容:

$('.div').css('min-height', $('.main-div').height());

這個例子設置了DIV的最小高度,這意味著它的高度只可以比這個設置的高度大而不能小。然而,一個更靈活的方法是循環的一組元素,并設置將最高元素的高度作為高度:

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());});

根據文本獲取元素

通過jQuery中的contains()選擇器,你能找到一個元素內的文本內容。如果文本不存在,則這個元素將被隱藏:

var search = $('#search').val();$('div:not(:contains("' + search + '"))').hide();

可見變化的觸發

當用戶不再聚焦或者重新聚焦一個標簽時觸發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!'); }});

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三台县| 舒兰市| 萍乡市| 乌海市| 新竹市| 泗阳县| 冀州市| 许昌县| 梁山县| 诸城市| 安吉县| 交城县| 罗田县| 宜黄县| 榆中县| 余江县| 家居| 台前县| 千阳县| 静安区| 许昌县| 衡阳县| 会东县| 卓尼县| 大同市| 多伦县| 临桂县| 黑水县| 华蓥市| 连江县| 迁安市| 恩平市| 余姚市| 福贡县| 兰西县| 宣恩县| 固镇县| 苍南县| 石首市| 阿尔山市| 芒康县|