2013-04-26 152 views
2

我有一個菜單,瀏覽特定頁面上幻燈片的列表。這一切都用下面的代碼(HTML)進展順利:爲什麼變量在這種情況下是不確定的?

<ul class="dropdown"> 
     <li class="orange"><a href="#" data-jumpslide="2"><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">When to do it</div><div class="clear"></div></div></a></li> 
     <li class="orange"><a href="#" data-jumpslide="3" ><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">Key faces</div><div class="clear"></div></div></a></li> 
     <li class="orange"><a href="#" data-jumpslide="5" ><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">Functionalities</div><div class="clear"></div></div></a></li> 
</ul> 

和jQuery是:

$('a[data-jumpslide]').each(function(idx, ele){ 
    $(ele).on('click', function(){ 
     var slideToJump = $(this).data('jumpslide'); 
     window.slider.go(false, slideToJump+1); 
    }); 
}); 

正如你可以看到,每當鏈接被點擊,它只是移動的幻燈片上的具體頁。

但現在我不得不創建一個通用菜單,它可以在任何頁面上移動滑塊。因此,如果我是「頁面1」頁面,並在「頁面2」中單擊第7張幻燈片的鏈接,代碼應打開第2頁並移至幻燈片7.

這就是我如何更改HTML :

<ul class="dropdown"> 
     <li class="orange"><a href="page2.php" data-jumpslide="2" data-goto="page2"><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">When to do it</div><div class="clear"></div></div></a></li> 
     <li class="orange"><a href="page2.php" data-jumpslide="2" data-goto="page2" ><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">Key faces</div><div class="clear"></div></div></a></li> 
     <li class="orange"><a href="page2.php" data-jumpslide="2" data-goto="page2" ><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">Functionalities</div><div class="clear"></div></div></a></li> 
</ul> 

,這是我改變了jQuery:

$('a[data-jumpslide]').each(function(idx, ele){ 
    $(ele).on('click', function(e){ 
     e.preventDefault(); 
     var href = $(this).attr('href'); 
     var slideToJump = $(this).data('jumpslide'); 
     var gotoPage = $(this).data('data-goto'); 

     slideToJump++; 
     if (gotoPage != '') { 
       window.slider.go(false, slideToJump); 
     } 
     else { 
      var url = href+'#'+slideToJump; 
      window.location = url; 
     } 
    }); 
}); 

var hash = window.location.hash; 
$(document).ready(function(idx, ele){ 
    if (hash != '') {   
     window.setTimeout(function() { 
      window.slider.go(false, hash); 
     }, 2000); 
    } 
    else { 
     console.log("No hash found " + hash); 
    } 
}); 

那麼這裏發生的是,當它需要到另一個網頁的任何鏈接,用戶點擊(說第2頁),它重定向,並在它到達那裏後,它檢查頁面是否有散列。如果確實如此,它會將幻燈片移至該號碼。

現在一切都很好,除了幻燈片不移動到數字!即使代碼相同,即使window.slider正在獲取滑塊,但它仍然不會移動。

當我在Slide Change回調函數上創建了一個console.log時,它給了我「未定義」。 (下面的代碼)

slideChangedCallBack: function(idx, slide) { 

     if (console) console.log('slideChangedCallBack: '+slide.data('pagename')); 
     if (s && s.t){ 
      s.pageName = slide.data('pagename'); 
      s.t(); 
     } 

     ... 
    } 
+1

'window.location.hash'返回一個字符串,例如'#2'。請注意字符串中的'#'字符,而不是來自'#'字符不存在的數據屬性。 – 2013-04-26 17:18:13

+0

我現在會正式拍我的臉2次。謝謝你讓我覺得凱文。 – Steve 2013-04-26 17:40:02

回答

0

所以,對任何人找零錢,我這樣做: -

var hash = window.location.hash.substring(1); 

,而不是這樣的: -

var hash = window.location.hash; 
+0

你願意接受這個答案嗎?點擊左邊的勾號圖標?謝謝! – halfer 2018-02-11 10:32:56

相關問題