2014-09-13 30 views
0

我在根據窗口寬度調整代碼時遇到了一些麻煩。如果窗口寬度小於450,我希望它滾動到某個部分,否則另一個。我哪裏錯了?jQuery窗口寬度條件不起作用

$('.artist-kina').click(function(e){ 
    e.preventDefault(); 
    $('html, body').animate({ 
     if ($(window).width() < 450 { 
      scrollTop: $('#artists').offset().top - 60 
     } 
     else { 
      scrollTop: $('#artists').offset().top - 115 
     } 
    }, 500); 
    $('.artists-home').fadeOut(function() { 
     $('.kina-gallery').fadeIn('slow'); 
    }); 
}); 
+0

你已經忘記了一個括號你如果結構:'如果($(窗口).WIDTH())' – 2014-09-13 13:27:14

+0

@ Pieter I把它放進去,現在我得到了一個意外的錯誤(''。這裏是錯誤:'錯誤在第148行第6列意外標記punc«(»,預計punc«:»' – J82 2014-09-13 13:30:41

+0

^put 450後的parantesis如果($(window).width()<450){' – Arijoon 2014-09-13 13:33:43

回答

3

括號是一個問題,但在更大的意義上的語法就是完全錯誤的:

$('html, body').animate({ 
    scrollTop: $("#artists").offset().top - (
     $(window).width() < 450 ? 60 : 115 
    ) 
}, 500); 

你不能只刪除一個if語句插入對象文本的中間。但是,您可以使用? :運算符在值之間做出選擇,作爲表達式的一部分。

現在請注意,與<body>的滾動位置混在一起可能會或可能不適用於所有瀏覽器。 Safari 用於有問題;它可能在更現代版本的瀏覽器中工作。

+0

我在想同樣的事情,但是它的寫法非常整齊。 +1 – Arijoon 2014-09-13 13:40:04

+0

非常感謝。這有助於我從現在開始記住這一點。 – J82 2014-09-13 13:42:34

0

嵌套代碼的方式有幾個問題,但最大的問題是Animate調用。

這應該工作:

$('.artist-kina').click(function(e){ 
    e.preventDefault(); 
    if ($(window).width() < 450) { 
     $("html, body").animate({ 
      scrollTop: $('#artists').offset().top-60 
     }, 500); 
    } 
    else { 
     $("html, body").animate({ 
      scrollTop: $('#artists').offset().top-115 
     }, 500); 
    } 
    $('.artists-home').fadeOut('slow', function() { 
     $('.kina-gallery').fadeIn('slow'); 
    }); 
}); 

這裏是一個工作的jsfiddle:http://jsfiddle.net/yy1v940u/5/