2011-08-15 100 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有時間準備任何需要的東西。如果這樣做你知道這就是問題所在。 –