2013-04-26 116 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

相关问题