我有一個菜單,瀏覽特定頁面上幻燈片的列表。這一切都用下面的代碼(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();
}
...
}
'window.location.hash'返回一個字符串,例如'#2'。請注意字符串中的'#'字符,而不是來自'#'字符不存在的數據屬性。 – 2013-04-26 17:18:13
我現在會正式拍我的臉2次。謝謝你讓我覺得凱文。 – Steve 2013-04-26 17:40:02