2016-12-01 26 views
2

我想禁用以下的JavaScript,如果屏幕尺寸爲< 601px禁用jQuery的

$(function() { 
    function rotate() { 
    $('#homemaincontent div').last().fadeOut(2000, function() { 
     $(this).insertBefore($('#homemaincontent div').first()).show(); 
    }); 
    } 
    setInterval(function() { 
    rotate(); 
    }, 7000); 
}); 

我發現了一個看似不錯的答案如下頁面,但我不能讓它的工作:

Disable jquery function when screen width larger than 480

+0

編輯我的答案,以便它可以顯示靜態圖像以及根據您的評論。 – icecub

回答

0
$(function() { 
    function rotate() { 
    $('#homemaincontent div').last().fadeOut(2000, function() { 
     $(this).insertBefore($('#homemaincontent div').first()).show(); 
    }); 
    } 
    setInterval(function() { 
     if(Math.max(document.documentElement.clientWidth, window.innerWidth || 0) > 601) 
      rotate(); 
    }, 7000); 
    }); 

所以現在每次旋轉稱爲它會首先檢查視口寬度大於601,如果是它將執行的功能。

如果你不想調整爲響應行爲,你可以把那個if語句在$(function(){ insert if() run rest of code else do nothing}開始時運行,當你的腳本運行的第一次只會評估一次

編輯 要回答有關在評論

你的第二個問題創建一個staticImageX CSS類和DynamicImageX類 ,將有喜歡的位置,寬度,頂部等 使用jQuery和上述表達式來測試針對寬度再次需要的CSS和運行jQuery代碼來調整圖像容器上的類在同一個intervan爲您的旋轉功能 所以

if(width > 601) 
    $('#imageContainer').addClass('DynamicImageX').removeClass('staticImageX') 
else 
    $('#imageContainer').addClass('staticImageX').removeClass('DynamicImageX')** 
+0

感謝您的好評!如果屏幕小於601,是否有顯示靜態圖像? – Jacob

+0

當然。創建2個CSS類,每個類將處理圖像容器的每個案例所需的CSS。 因此,創建一個staticImageX css類和一個DynamicImageX類 使用jQuery和上述表達式再次測試寬度爲 並運行jquery代碼來調整圖像容器上的類與您的旋轉函數相同的intervan – MKougiouris

1

包括以下jQuery的插件:

/*! viewportSize | Author: Tyson Matanich, 2013 | License: MIT */ 
(function(n){n.viewportSize={},n.viewportSize.getHeight=function(){return t("Height")},n.viewportSize.getWidth=function(){return t("Width")};var t=function(t){var f,o=t.toLowerCase(),e=n.document,i=e.documentElement,r,u;return n["inner"+t]===undefined?f=i["client"+t]:n["inner"+t]!=i["client"+t]?(r=e.createElement("body"),r.id="vpw-test-b",r.style.cssText="overflow:scroll",u=e.createElement("div"),u.id="vpw-test-d",u.style.cssText="position:absolute;top:-1000px",u.innerHTML="<style>@media("+o+":"+i["client"+t]+"px){body#vpw-test-b div#vpw-test-d{"+o+":7px!important}}<\/style>",r.appendChild(u),i.insertBefore(r,e.head),f=u["offset"+t]==7?i["client"+t]:n["inner"+t],i.removeChild(r)):f=n["inner"+t],f}})(this); 

而且使用這樣的:

if (viewportSize.getWidth() > 600) { 
//your function goes here 
} 
+0

我用它的附加腳本得到了它的工作,但我已經有了自己的jQuery插件,所以謝謝。但是,如果我想在之後添加一個else語句以顯示靜態圖像,那麼我該怎麼做? – Jacob

+0

只需在if後面的括號後面添加一個「else {//用於顯示圖像的代碼}根據您希望顯示圖像的方式,您可以將某個類添加到容器中,也可以創建並填充HTML元素。 – junkfoodjunkie

2

如果要檢測瀏覽器窗口:

if($(window).width() > 601){ 
    // function 
} 

如果您要檢測你的HTML文檔的寬度:

if($(document).width() > 601){ 
    // function 
} 

根據對另一個答案您的評論,你可以添加靜態圖像,而不是像這樣:

$(function() { 
    function rotate() { 
     $('#homemaincontent div').last().fadeOut(2000, function() { 
      $(this).insertBefore($('#homemaincontent div').first()).show(); 
     }); 
    } 

    setInterval(function() { 
     if($(window).width() > 601){ 
      rotate(); 
     } else { 
      var staticIMG = document.getElementById('staticIMG'); 
      if (typeof(staticIMG) != 'undefined' && staticIMG != null){ 
       return false; 
      } else { 
       $("<img id='staticIMG' src='your/static/image.png'>").insertBefore($('#homemaincontent div').first()).show(); 
      } 
     } 
    }, 7000); 
}); 
+0

這不似乎在工作。當我檢查元素時,腳本仍在運行,並將新靜態圖像放在HTML中的所有其他圖像之前,並繼續在HTML中反覆添加相同的靜態圖像。但是,我從來沒有在屏幕上看到自己想要的圖像。思考? – Jacob

+0

@Jacob我改變了腳本,所以它只會添加一次圖片。如果你沒有看到圖片,你應該確保'src ='your/static/image.png'包含你試圖展示的圖片的正確路徑。 – icecub