簡體   English   中英

編寫以下jquery的更好方法

[英]Better way to write the following jquery

我對javaScript / jquery很陌生。 我編寫了以下代碼來切換移動導航,但是我很確定有一種簡單的方法可以將以下代碼塊組合在一起。 我希望您能提出建議,以更好地,更時尚的方式編寫此內容。 謝謝

$(document).ready(function(){
var width = $(window).width();
    if(width <=500){
        $("nav").addClass("mobile").removeClass("desktop");
    }
    else{
        $("nav").removeClass("mobile").addClass("desktop");
    }

});

$(document).ready(function(){
  $(window).resize(function(){
    var width = $(window).width();
    if(width <=500){
        $("nav").addClass("mobile").removeClass("desktop");
    }
    else{
        $("nav").removeClass("mobile").addClass("desktop");
    }
});});

只需創建一個函數並調用兩次:

function changeClasses() {
    var width = $(window).width();
    if(width <=500){
        $("nav").addClass("mobile").removeClass("desktop");
    }
    else{
        $("nav").removeClass("mobile").addClass("desktop");
    }
}

$(document).ready(changeClasses);
$(window).resize(changeClasses);

也許更好地使用CSS媒體查詢...

 @media screen and (max-width: 500px){ .desktop { width: or another rules... } } 

您可以將其設置為一個單獨的函數,以對其進行清理:

function toggleClass() {
    var width = $(window).width();
    if(width <=500) {
        $("nav").addClass("mobile").removeClass("desktop");
    } else {
        $("nav").removeClass("mobile").addClass("desktop");
    }
}

$(document).ready(function(){
    toggleClass();
});

$(window).resize(function(){
    toggleClass();
});

您始終可以在調整大小后添加一次事件,然后觸發調整大小事件。 我向事件添加了名稱空間,以便在觸發它時不會與任何其他窗口調整大小事件發生沖突。

$(window).on('resize.load', function() {
  var isMobile = $(window).width() < 500;
  $("nav").toggleClass("mobile", isMobile).toggleClass("desktop", !isMobile);
}).trigger('resize.load');

https://jsfiddle.net/r6myh0z8/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM