你應該知道的jQuery技巧【收藏】

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

回到頂部按鈕

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

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

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

圖片預加載

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

$.preloadImages =function(){for(vari =0; i ').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');varheight =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()選擇器,你能找到一個元素內的文本內容。如果文本不存在,則這個元素將被隱藏:

varsearch = $('#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!'); ?}elseif(e.target.visibilityState ==="hidden") {console.log('Tab is now hidden!'); ?}});

歡迎關注我的公眾號(同步更新文章):DoNet技術分享平臺

閱讀原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272774.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LINQ表達式用法整理

收集一些Linq表達式中的一些比較常用的寫法,希望能給大家工作當中帶來一些便利。1. Where子句條件過濾結果集型(集合數據使用這種,譬如數組、列表數據,同樣適用于Datatable等多列數據集)類SQL語句的寫法,對…

Eclipse is running in a JRE, but a JDK is required 解決方法(轉)

轉自:http://comeonbabye.iteye.com/blog/1186239 安裝Maven后每次啟動出現警告信息: Eclipse is running in a JRE, but a JDK is requiredSome Maven plugins may not work when importing projects or updating source folders. 分兩步解決問題: 1. 檢查Eclipse正…

java線程歸并排序_Java-歸并排序 - FeanLau的個人空間 - OSCHINA - 中文開源技術交流社區...

public class MergeSort {static int number0;public static void main(String[] args) {int[] a {26, 5, 98, 108, 28, 99, 100, 56, 34, 1 };printArray("排序前:",a);MergeSort(a);printArray("排序后:",a);}private static voi…

收集一些優秀的DoNet開源項目

Paste_Image.pngJson.NEThttp://json.codeplex.com/ Json.Net是一個讀寫Json效率比較高的.Net框架.Json.Net 使得在.Net環境下使用Json更加簡單。通過Linq To JSON可以快速的讀寫Json,通過JsonSerializer可以序列化你的.Net對象。讓你輕松實現.Net中所有類型(對象,基…

git初探

1 Linux下Git和GitHub環境的搭建 第一步: 安裝Git,使用命令 “sudo apt-get install git” 第二步: 到GitHub上創建GitHub帳號 第三步: 生成ssh key,使用命令 “ssh-keygen -t rsa -C "your_emailyouremail.com&q…

java編程思想 初始化_《java編程思想》_第五章_初始化與清理

初始化和清理是涉及安全的兩個問題,java中采用了構造器,并額外提供了“垃圾回收器”,對于不再使用的內存資源,垃圾回收器能自動將其釋放。一、用構造器確保初始化java中,通過提供構造器,類的設計者可以確保…

OkHttp 上手

OkHttp 上手 優點 快、節省帶寬。支持 HTTP/2 和 SPDY。HTTP/2 和 SPDY 允許對同一個主機的所有請求,使用一個 socket。如果不支持 SPDY 的話,可以用連接池減少請求等待時間。GZIP 縮小傳輸大小。緩存響應(response ca…

關于Net開發中一些SQLServer性能優化的建議

一、 ExecuteNonQuery和ExecuteScalar 對數據的更新不需要返回結果集,建議使用ExecuteNonQuery。由于不返回結果集可省掉網絡數據傳輸。它僅僅返回受影響的行數。如果只需更新數據用ExecuteNonQuery性能的開銷比較小。 ExecuteScalar它只返回結果集中第一行的第一列…

jstl mysql_java – jsp jstl sql與mysql中的奇怪行為

在mysql中我有一個存儲過程,其中包含一個sql:select firstname as i_firstname , lastname as i_lastname from roleuserwhere user_id uid ;我使用jstl代碼來獲取值: –call sp_select_username(?);${rows.i_firstname} ${rows.i_lastname}但是這個代…

C# 哈希表(Hashtable)用法筆記

一、什么是Hashtable?Hashtable 類代表了一系列基于鍵的哈希代碼組織起來的鍵/值對。它使用鍵來訪問集合中的元素。當您使用鍵訪問元素時,則使用哈希表,而且您可以識別一個有用的鍵值。哈希表中的每一項都有一個鍵/值對。鍵用于訪問集合中的項…

轉: Div與table的區別

1&#xff1a;速度和加載方式方面的區別 div 和 table 的差異不是速度&#xff0c;而是加載方式&#xff0c;速度只能是指網絡速度&#xff0c;如果速度足夠快&#xff0c;是沒有差異的&#xff1a; div 的加載方式是即讀即加載&#xff0c;遇到 <div> 沒有遇到 </div…

你的工作是為了你自己!

1、無論為誰打工&#xff0c;要為自己學東西&#xff0c;客觀為公司創造價值。我自己當年&#xff0c;無論我在方正給國內企業工作&#xff0c;還是我在雅虎給外國人工作&#xff0c;我都跟別人最大的不一樣&#xff0c;我從來不覺得我在給他們打工&#xff0c;我真的可能是很有…

java 無法注入service_SpringBoot集成shiro,MyRealm中無法@Autowired注入Service的問題

網上說了很多諸如是Spring加載順序&#xff0c;shiroFilter在Spring自動裝配bean之前的問題&#xff0c;其實也有可能忽略如下低級錯誤。在ShiroConfiguration中要使用Bean在ApplicationContext注入MyRealm&#xff0c;不能直接new對象。道理和Controller中調用Service一樣&…

python之函數用法startswith()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函數用法startswith() #http://www.runoob.com/python/att-string-startswith.html#startswith() #說明&#xff1a;返回布爾值,用于檢查字符串是否是以指定子字符串開頭&#xff0c;如果是則返回 True&#xff0c;否則…

別去取悅,心里沒你的人

鞋子不合適不必硬塞&#xff0c;否則磨了自己的腳&#xff1b;不必討好心里沒你的人&#xff0c;不在乎你的人&#xff0c;你付出再多&#xff0c;也打動不了他。討好心里沒你的人&#xff0c;會讓自己很累很累&#xff1b;總是遷就他&#xff0c;總是圍著他轉&#xff0c;最后…

tensorflow java 加速_Tensorflow使用GPU加速

測試faster-rcnn時&#xff0c;cpu計算速度較慢&#xff0c;調整代碼改為gpu加速運算將 with tf.Session() as sess: 替換為1 gpu_options tf.GPUOptions(per_process_gpu_memory_fraction0.9)2 with tf.Session(configtf.ConfigProto(gpu_optionsgpu_options,log_device_plac…

Install OpenStack Kilo Dashboard wiht Nginx + uWSGI On RHEL7.1

一、安裝Horizon、Nginx、uWSGI yum install -y uwsgi-plugin-python openstack-dashboard uwsgi nginx 二、配置uWSGI cat >/etc/uwsgi.ini <<EOF [uwsgi] plugins python master true processes 10 threads 2 chmod-socket 666socket 127.0.0.1:9000 pidfile …

C#枚舉類型的筆記

一、枚舉類型的概念枚舉類型聲明為一組相關的符號常數定義了一個類型名稱。枚舉用于"多項選擇"場合&#xff0c;就是程序運行時從編譯時已經設定的固定數目的“選擇”中做出決定。枚舉類型&#xff08;也稱為枚舉&#xff09;為定義一組可以賦給變量的命名整數常量提…

java動態打印_JFreeChart學習(三)——動態打印java內存使用情況

JFreeChart動態打印java內存使用情況import java.awt.BasicStroke;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt…

WPF中StringToImage和BoolToImage簡單用法

在WPF的綁定控件操作中&#xff0c;經常會通過bool值或者某些特定的string值做出相應動作。但UI層控件的很多屬性對應的都不是Bool值或者對應的只是固定的String值。 這個時候有兩方法解決該問題。 1.是在后臺cs中做出比較判斷&#xff0c;然后根據相應結果傳達UI層做出相應動作…