每個程式設計師都會的35個jQuery小技巧
1. 禁止右鍵點選
- $(document).ready(function(){
- $(document).bind(“contextmenu”,function(e){
- return false;
- });
- });
2. 隱藏搜尋文字框文字
- Hide when clicked in the search field, the value.(example can be found below in the comment fields)
- $(document).ready(function() {
- $(“input.text1”).val(“Enter your search text here”);
- textFill($(`input.text1`));
- });
- function textFill(input){ //input focus text function
- var originalvalue = input.val();
- input.focus( function(){
- if( $.trim(input.val()) == originalvalue ){ input.val(“); }
- });
- input.blur( function(){
- if( $.trim(input.val()) == “ ){ input.val(originalvalue); }
- });
- }
3. 在新視窗中開啟連結
- XHTML 1.0 Strict doesn’t allow this attribute in the code, so use this to keep the code valid.
- $(document).ready(function() {
- //Example 1: Every link will open in a new window
- $(`a[href^=”http://”]`).attr(“target”, “_blank”);
- //Example 2: Links with the rel=”external” attribute will only open in a new window
- $(`a[@rel$=`external`]`).click(function(){
- this.target = “_blank”;
- });
- });
- // how to use
- <a href=“http://www.opensourcehunter.com” rel=external>open link</a>
4. 檢測瀏覽器
- 注: 在版本jQuery 1.4中,$.support 替換掉了$.browser 變數
- $(document).ready(function() {
- // Target Firefox 2 and above
- if ($.browser.mozilla && $.browser.version >= “1.8” ){
- // do something
- }
- // Target Safari
- if( $.browser.safari ){
- // do something
- }
- // Target Chrome
- if( $.browser.chrome){
- // do something
- }
- // Target Camino
- if( $.browser.camino){
- // do something
- }
- // Target Opera
- if( $.browser.opera){
- // do something
- }
- // Target IE6 and below
- if ($.browser.msie && $.browser.version <= 6 ){
- // do something
- }
- // Target anything above IE6
- if ($.browser.msie && $.browser.version > 6){
- // do something
- }
- });
5. 預載入圖片
- This piece of code will prevent the loading of all images, which can be useful if you have a site with lots of images.
- $(document).ready(function() {
- jQuery.preloadImages = function()
- {
- for(var i = 0; i<ARGUMENTS.LENGTH; jQuery(?<img { i++)>“).attr(“src”, arguments[i]);
- }
- }
- // how to use
- $.preloadImages(“image1.jpg”);
- });
6. 頁面樣式切換
- $(document).ready(function() {
- $(“a.Styleswitcher”).click(function() {
- //swicth the LINK REL attribute with the value in A REL attribute
- $(`link[rel=stylesheet]`).attr(`href` , $(this).attr(`rel`));
- });
- // how to use
- // place this in your header
- <LINK rel=stylesheet type=text/css href=“default.css”>
- // the links
- <A href=“#” rel=default.css>Default Theme</A>
- <A href=“#” rel=red.css>Red Theme</A>
- <A href=“#” rel=blue.css>Blue Theme</A>
- });
7. 列高度相同
如果使用了兩個CSS列,使用此種方式可以是兩列的高度相同。
- $(document).ready(function() {
- function equalHeight(group) {
- tallest = 0;
- group.each(function() {
- thisHeight = $(this).height();
- if(thisHeight > tallest) {
- tallest = thisHeight;
- }
- });
- group.height(tallest);
- }
- // how to use
- $(document).ready(function() {
- equalHeight($(“.left”));
- equalHeight($(“.right”));
- });
- });
8. 動態控制頁面字型大小
使用者可以改變頁面字型大小
- $(document).ready(function() {
- // Reset the font size(back to default)
- var originalFontSize = $(`html`).css(`font-size`);
- $(“.resetFont”).click(function(){
- $(`html`).css(`font-size`, originalFontSize);
- });
- // Increase the font size(bigger font0
- $(“.increaseFont”).click(function(){
- var currentFontSize = $(`html`).css(`font-size`);
- var currentFontSizeNum = parseFloat(currentFontSize, 10);
- var newFontSize = currentFontSizeNum*1.2;
- $(`html`).css(`font-size`, newFontSize);
- return false;
- });
- // Decrease the font size(smaller font)
- $(“.decreaseFont”).click(function(){
- var currentFontSize = $(`html`).css(`font-size`);
- var currentFontSizeNum = parseFloat(currentFontSize, 10);
- var newFontSize = currentFontSizeNum*0.8;
- $(`html`).css(`font-size`, newFontSize);
- return false;
- });
- });
9. 返回頁面頂部功能
For a smooth(animated) ride back to the top(or any location).
- $(document).ready(function() {
- $(`a[href*=#]`).click(function() {
- if (location.pathname.replace(/^//,“) == this.pathname.replace(/^//,“)
- && location.hostname == this.hostname) {
- var $target = $(this.hash);
- $target = $target.length && $target
- || $(`[name=` + this.hash.slice(1) +`]`);
- if ($target.length) {
- var targetOffset = $target.offset().top;
- $(`html,body`)
- .animate({scrollTop: targetOffset}, 900);
- return false;
- }
- }
- });
- // how to use
- // place this where you want to scroll to
- <A name=top></A>
- // the link
- <A href=“#top”>go to top</A>
- });
10. 獲得滑鼠指標XY值
Want to know where your mouse cursor is?
- $(document).ready(function() {
- $().mousemove(function(e){
- //display the x and y axis values inside the div with the id XY
- $(`#XY`).html(“X Axis : “ + e.pageX + ” | Y Axis “ + e.pageY);
- });
- // how to use
- <DIV id=XY></DIV>
- });
11.返回頂部按鈕
你可以利用 animate 和 scrollTop 來實現返回頂部的動畫,而不需要使用其他外掛。
- // Back to top
- $(`a.top`).click(function () {
- $(document.body).animate({scrollTop: 0}, 800);
- return false;
- });
- <!– Create an anchor tag –>
- <a href=“#”>Back to top</a>
改變 scrollTop 的值可以調整返回距離頂部的距離,而 animate 的第二個引數是執行返回動作需要的時間(單位:毫秒)。
12.預載入圖片
如果你的頁面中使用了很多不可見的圖片(如:hover 顯示),你可能需要預載入它們:
- $.preloadImages = function () {
- for (var i = 0; i < arguments.length; i++) {
- $(`<img>`).attr(`src`, arguments[i]);
- }
- };
- $.preloadImages(`img/hover1.png`, `img/hover2.png`);
13.檢查圖片是否載入完成
有時候你需要確保圖片完成載入完成以便執行後面的操作:
- $(`img`).load(function () {
- console.log(`image load successful`);
- });
你可以把 img 替換為其他的 ID 或者 class 來檢查指定圖片是否載入完成。
14.自動修改破損影像
如果你碰巧在你的網站上發現了破碎的影像連結,你可以用一個不易被替換的影像來代替它們。新增這個簡單的程式碼可以節省很多麻煩:
- $(`img`).on(`error`, function () {
- $(this).prop(`src`, `img/broken.png`);
- });
即使你的網站沒有破碎的影像連結,新增這段程式碼也沒有任何害處。
15.滑鼠懸停(hover)切換 class 屬性
假如當使用者滑鼠懸停在一個可點選的元素上時,你希望改變其效果,下面這段程式碼可以在其懸停在元素上時新增 class 屬性,當使用者滑鼠離開時,則自動取消該 class 屬性:
- $(`.btn`).hover(function () {
- $(this).addClass(`hover`);
- }, function () {
- $(this).removeClass(`hover`);
- });
你只需要新增必要的CSS程式碼即可。如果你想要更簡潔的程式碼,可以使用 toggleClass 方法:
- $(`.btn`).hover(function () {
- $(this).toggleClass(`hover`);
- });
注:直接使用CSS實現該效果可能是更好的解決方案,但你仍然有必要知道該方法。
16.禁用 input 欄位
有時你可能需要禁用表單的 submit 按鈕或者某個 input 欄位,直到使用者執行了某些操作(例如,檢查“已閱讀條款”核取方塊)。可以新增 disabled 屬性,直到你想啟用它時:
$(`input[type=”submit”]`).prop(`disabled`, true);
你要做的就是執行 removeAttr 方法,並把要移除的屬性作為引數傳入:
$(`input[type=”submit”]`).removeAttr(`disabled`);
17.阻止連結載入
有時你不希望連結到某個頁面或者重新載入它,你可能希望它來做一些其他事情或者觸發一些其他指令碼,你可以這麼做:
- $(`a.no-link`).click(function (e) {
- e.preventDefault();
- });
18.切換 fade/slide
fade 和 slide 是我們在 jQuery 中經常使用的動畫效果,它們可以使元素顯示效果更好。但是如果你希望元素顯示時使用第一種效果,而消失時使用第二種效果,則可以這麼做:
- // Fade
- $(`.btn`).click(function () {
- $(`.element`).fadeToggle(`slow`);
- });
- // Toggle
- $(`.btn`).click(function () {
- $(`.element`).slideToggle(`slow`);
- });
19.簡單的手風琴效果
這是一個實現手風琴效果快速簡單的方法:
- // 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;
- });
20.讓兩個 DIV 高度相同
有時你需要讓兩個 div 高度相同,而不管它們裡面的內容多少。可以使用下面的程式碼片段:
- var $columns = $(`.column`);
- var height = 0;
- $columns.each(function () {
- if ($(this).height() > height) {
- height = $(this).height();
- }
- });
- $columns.height(height);
這段程式碼會迴圈一組元素,並設定它們的高度為元素中的最大高。
21. 驗證元素是否為空
- This will allow you to check if an element is empty.
- $(document).ready(function() {
- if ($(`#id`).html()) {
- // do something
- }
- });
22. 替換元素
- $(document).ready(function() {
- $(`#id`).replaceWith(`
- <DIV>I have been replaced</DIV>
- `);
- });
23. jQuery延時載入功能
- $(document).ready(function() {
- window.setTimeout(function() {
- // do something
- }, 1000);
- });
24. 移除單詞功能
- $(document).ready(function() {
- var el = $(`#id`);
- el.html(el.html().replace(/word/ig, “”));
- });
25. 驗證元素是否存在於jquery物件集合中
- $(document).ready(function() {
- if ($(`#id`).length) {
- // do something
- }
- });
26. 使整個DIV可點選
- $(document).ready(function() {
- $(“div”).click(function(){
- //get the url from href attribute and launch the url
- window.location=$(this).find(“a”).attr(“href”); return false;
- });
- // how to use
- <DIV><A href=“index.html”>home</A></DIV>
- });
27. ID與Class之間轉換
當改變Window大小時,在ID與Class之間切換
- $(document).ready(function() {
- function checkWindowSize() {
- if ( $(window).width() > 1200 ) {
- $(`body`).addClass(`large`);
- }
- else {
- $(`body`).removeClass(`large`);
- }
- }
- $(window).resize(checkWindowSize);
- });
28. 克隆物件
- $(document).ready(function() {
- var cloned = $(`#id`).clone();
- // how to use
- <DIV id=id></DIV>
- });
29. 使元素居螢幕中間位置
- $(document).ready(function() {
- jQuery.fn.center = function () {
- this.css(“position”,“absolute”);
- this.css(“top”, ( $(window).height() – this.height() ) / 2+$(window).scrollTop() + “px”);
- this.css(“left”, ( $(window).width() – this.width() ) / 2+$(window).scrollLeft() + “px”);
- return this;
- }
- $(“#id”).center();
- });
30. 寫自己的選擇器
- $(document).ready(function() {
- $.extend($.expr[`:`], {
- moreThen1000px: function(a) {
- return $(a).width() > 1000;
- }
- });
- $(`.box:moreThen1000px`).click(function() {
- // creating a simple js alert box
- alert(`The element that you have clicked is over 1000 pixels wide`);
- });
- });
31. 統計元素個數
- $(document).ready(function() {
- $(“p”).size();
- });
32. 使用自己的 Bullets
- $(document).ready(function() {
- $(“ul”).addClass(“Replaced”);
- $(“ul > li”).prepend(“‒ “);
- // how to use
- ul.Replaced { list-style : none; }
- });
33. 引用Google主機上的Jquery類庫
- //Example 1
- <SCRIPT src=“http://www.google.com/jsapi”></SCRIPT>
- <SCRIPT type=text/javascript>
- google.load(“jquery”, “1.2.6”);
- google.setOnLoadCallback(function() {
- // do something
- });
- </SCRIPT><SCRIPT type=text/javascript src=“http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js”></SCRIPT>
- // Example 2:(the best and fastest way)
- <SCRIPT type=text/javascript src=“http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js”></SCRIPT>
34. 禁用Jquery(動畫)效果
- $(document).ready(function() {
- jQuery.fx.off = true;
- });
35. 與其他Javascript類庫衝突解決方案
- $(document).ready(function() {
- var $jq = jQuery.noConflict();
- $jq(`#id`).show();
- });
來源:51CTO
相關文章
- 每個程式設計師都會的 35 個 jQuery 小技巧程式設計師jQuery
- 每個Python新手都應該知道的程式設計技巧Python程式設計
- 每個程式設計師都該閱讀的10本書程式設計師
- 每個程式設計師都應該知道的下一個程式語言——Kotlin程式設計師Kotlin
- 提高 Java 效率的 35 個小技巧,用了的都說好!Java
- 每個程式設計師都應該瞭解的硬體知識程式設計師
- 每個程式設計師都需要知道的概念和術語 - codeburst程式設計師
- 每個程式設計師都應該參加一次 GDD程式設計師
- 增加你找到程式設計師工作機會的 5 個技巧程式設計師
- 每一個程式設計師,都希望能成為分散式系統架構師程式設計師分散式架構
- 每個人都應該知道的jQuery的提示jQuery
- 速看!程式設計師巧談薪資的六個小技巧!程式設計師
- 老程式設計師的10個程式設計小技巧,教你寫出高質量程式碼!程式設計師
- 每個程式設計師都在推薦的好用api程式設計師API
- 每個程式設計師都該有個自己的部落格,分享我的四種部落格搭建教程!程式設計師
- 7個Web前端程式設計師必須會用CSS技巧Web前端程式設計師CSS
- 大師級設計師才會的這個CAD技巧,你會嗎?
- 每個Java程式設計師都必須知道的四種負載均衡演算法Java程式設計師負載演算法
- 看,那個35歲的程式設計師好像一條”狗“...程式設計師
- 程式設計師的35個壞習慣,你有幾條?程式設計師
- 每個JavaScript工程師都應懂的33個概念JavaScript工程師
- 好程式設計師web前端培訓分享九個JavaScript小技巧程式設計師Web前端JavaScript
- 兩個程式設計師老友的會面程式設計師
- 每個程式設計師都需要知道一些遊戲網路知識程式設計師遊戲
- 屬於每個程式設計師的節日,1024程式設計師節程式碼敲響世界程式設計師
- 不會填坑的程式設計師不是一個好程式設計師!程式設計師
- 關於Unicode,字符集,字元編碼,每個程式設計師都應該知道的事Unicode字元程式設計師
- 35+的網際網路程式設計師,人都哪去了?程式設計師
- 每到一個階段,都會有一個最火的程式設計師職位,目前就是前端!程式設計師前端
- 21個UI設計必會的設計技巧UI
- [譯]7個ES6程式設計小技巧程式設計
- 書單推薦:每個程式設計師必看的11本書程式設計師
- 程式設計師必備:30個MySQL資料庫常用小技巧,值得收藏!程式設計師MySql資料庫
- 35歲以上的程式設計師們,後來都幹什麼去了?程式設計師
- 21個奇葩註釋,程式設計師看了都點贊程式設計師
- 導致程式設計師寫出爛程式碼的35個惡習,看看你染上了幾個?程式設計師
- 【ChatGPT】每個程式設計師百寶箱必備的語言模型ChatGPT程式設計師模型
- 這些哭笑不得的情景,每個程式設計師都可能面對程式設計師
- 這十五本Python書籍!是每個程式設計師必備的!Python程式設計師