2014-01-05 77 views
1

我寫了一個函數,它會在用戶滾動後將我的頁面滾動到最近的定義點(圖層的頂部)。帶有大量'if'語句的jQuery。必須有一個更好的方法來做到這一點?

我對自己感到非常滿意,但我看着代碼,它看起來很笨重和可怕。沒有太多的閒言:

enter code here 

sli1 = 0; 
sli2 = slideheight; 
sli3 = (slideheight * 2); 
sli4 = (slideheight * 3); 
sli5 = (slideheight * 4); 
sli6 = (slideheight * 5); 
sli7 = (slideheight * 6); 
frac = (slideheight/2); 

function autoScroll() { 
    cl = mywindow.scrollTop(); 
    if(cl < sli2-frac && cl < sli1+frac){goToByScroll(1);} 
    if(cl > sli2-frac && cl < sli2+frac){goToByScroll(2);} 
    if(cl > sli3-frac && cl < sli3+frac){goToByScroll(3);} 
    if(cl > sli4-frac && cl < sli4+frac){goToByScroll(4);} 
    if(cl > sli5-frac && cl < sli5+frac){goToByScroll(5);} 
    if(cl > sli6-frac && cl < sli6+frac){goToByScroll(6);} 
    if(cl > sli7-frac && cl < sli7+frac){goToByScroll(7);} 
} 

我認爲它應該看起來更像這個...

function aS() { 
/*loop to create array like 
array = ('sl[0] = 0', sl[1] = sh.... there must be a way of automating this part*\ 
    cL = mW.scrollTop(); 
    var cH = (cl < sl[1]-f && cl < sl[0]+f)?'1':(cl > sl[1]-f && cl < sl[1]+f)?'2': 
    (cl > sl[2]-f && cl < sl[2]+f)?'3':(cl > sl[3]-f && cl < sl[3]+f)?'4': 
    (cl > sl[4]-f && cl < sl[4]+f)?'5':(cl > sl[5]-f && cl < sl[5]+f)?'6': 
    (cl > sl[6]-f && cl < sl[6]+f)?'7'goToByScroll(cH); 

但是現在看那個,即使長相醜陋,是有一些很好的做這件事的方式一種天才的邏輯。我希望我在這裏有道理,代碼可行,但我認爲它可以用更優雅的方式完成,但我對jQuery很陌生,雖然我現在已經碰到了這個磚牆,但請幫幫我。

我的解決辦法,是JavaScript的可能,但.js文件開始:

jQuery(document).ready(function ($) { 

和是goToByScroll()函數的jQuery ....

function goToByScroll(dataslide) { 
htmlbody.animate({ 
    scrollTop: $('.slide[data-slide="' + dataslide + '"]').offset().top 
}, 2000, 'easeInOutQuint'); 
} 
+0

這和jQuery有什麼關係? – Christian

+0

@Christian scrollTop()是一種jQuery方法。這是我看到的唯一的東西。 –

+0

是的,只有90%左右的代碼是純javascript ...... – Christian

回答

1

或許像

function autoScroll() { 
    var cl = mywindow.scrollTop(), 
     target = Math.floor((cl/slideheight)+0.4999) + 1 || 1; 

    goToByScroll(target); 
} 
+1

我即將張貼相同。然後'壓裂'是無關緊要的。 –

+0

@Tim,非常正確..刪除它.. –

+0

我已經測試過這個功能,但是它不能正常工作,頁面會從第三張幻燈片滑到最上面的幻燈片,有時它會上升兩個,也是它的重點選擇是不同的每張幻燈片,嗯,這是一個不錯的主意,但我認爲數學不一樣。 – SuperKim

相關問題