我有一个菜单,浏览特定页面上幻灯片的列表。这一切都用下面的代码(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