2011-08-15 41 views
0

使用mootools.js 1.3.2和mootools的-more.js显示格链接被点击

至于我可以告诉大家这是应该揭示div和还隐藏了的内容和linkTab的div在同一时时间。

$('blogLink').addEvent('click', function(){ 
$('homeLink').removeClass('active'); 
$('linkTab').removeClass('active'); 
$('blogLink').addClass('active'); 
content.slideOut(); 
linkTab.slideOut(); 
blogLink.slideIn(); 
}); 

这是HTML

<a href="#" id="blogLink">Blog</a> 
<div id="blogContent"> 
content here 
</div> 

这一切都正常工作,这是确定的,但除此之外,我也希望能够给人们喜欢http://mysite.com/#blogLink一个URL,并有blogContent DIV打开。当我现在这样做时,它会将我带到页面的顶部,blogContent div将隐藏起来。

我该如何做到这一点?我曾尝试添加mootools-smoothscroll.js并使用这里列出的方法http://davidwalsh.name/smooth-scroll-mootools,但这只是打破了整个页面 - 无法正确加载。

我对mootools没有经验,对Javascript也很虚弱,所以请原谅我,如果我需要一段时间才能“得到”你想要解释的内容。

非常感谢。

回答

0

首先,您是否特别重视MooTools?如果你是一个JavaScript新手,jQuery可能更容易使用,并且肯定有更大的支持社区。但我会后应在MooTools的工作,现在的解决方案:

如果我理解正确的话,你想达到什么是以下几点:

  • 您发布的匿名函数会在“博客“被点击
  • 如果有人访问网址中的#blogLink,该功能也会运行。

这不是太难以实现:

// Once the DOM has loaded - so that our elements are definitely available 
window.addEvent('domready', function() { 
    // Check for #blogLink hashtag, and reveal blog 
    if(window.location.hash == 'blogLink') { revealBlog(); } 

    // Make sure blog is revealed when link is clicked 
    $('blogLink').addEvent('click', revealBlog); 
}); 

function revealBlog() { 
    $('homeLink').removeClass('active'); 
    $('linkTab').removeClass('active'); 
    $('blogLink').addClass('active'); 
    content.slideOut(); 
    linkTab.slideOut(); 
    blogLink.slideIn(); 
} 

你也可以改变你的链接标记行动:

<a href="#blogLink" id="blogLink">Blog</a> 

,以确保他们始终是在正确的链接博客被揭示。

+0

这对我很有意义。不幸的是,其他的东西一定是干涉。我将揭示变成了一个功能,并按照您的建议实施了所有功能。点击同一页面的效果非常好,但是当我直接在浏览器地址栏中输入http://site.com/#blogLink或点击另一页面的链接时,我仍然可以看到页面的顶部,blogContent DIV处于隐藏状态。 我绝对没有和mootools结婚,但现在我只想修复一些不是由我创建的东西。希望稍后切换。 – tbm

+0

我也看到这一点,并怀疑它是否有干扰。 'VAR blogLink =新Fx.Slide( 'blogContent',{ \t \t \t的onComplete:函数(){ \t \t \t $( 'blogContent')。setStyle('height','20000px'); \t \t \t} \t \t \t});' – tbm

+0

这是我很难弄清什么是错了,没有行动看到整个页面,或者至少所有相关的代码。当您访问URL时可能无法正常工作,因为MooTools必须在该功能成功运行之前准备好一些内容,所以'domready'为时尚早。你可以尝试改变上面的代码:'if(window.location.hash =='blogLink'){setTimeout(revealBlog,5000);}'。这会在页面加载5秒后运行,这会让MooTools有时间准备任何需要的东西。如果这样做你知道这就是问题所在。 –