2011-08-17 96 views
2

我已經在jQuery論壇上問過這個問題,但我沒有得到答案。我在jScrollPane插件的初始化時遇到了問題。我設立了一個測試網站來說明它:http://herrmondl.multimediaart.at/_notwebsite/test/test.htmljScrollPane初始化問題

點擊圖片應該會更新整個左邊的DIV。第一次點擊圖片效果很好,但重複此過程會使「生物」部分消失。這肯定是因爲jScrollPane插件的初始化錯誤。 如果您(重新)加載網站並首先點擊Urkel,您會看到自定義滾動條。

因此,這裏的bug的代碼調用懸停,然後單擊事件:

$('div.artistImg a').hover(function() { 

    var currArtist = $(this).parent().find('div.artistName'), 
     clicked = $(currArtist).hasClass('artistActive'); 

    if (!clicked) { 
     $(currArtist).stop().css('top', '30px').show().animate({ 
      "top": "0px" 
     }, "fast"); 
    } 
}, function() { 
    // if(!$clicked) { 
    //  $(currArtist).stop() 
    //   .css({ 
    //    'display': 'block', 
    //    'top':'0px' 
    //    }) 
    //   .animate({"top": "30px"}, "fast");  
}).bind('click', function(e) { 
    $('div.artistActive').removeClass('artistActive'); 
    $(this).parent().find('div.artistName').addClass('artistActive'); 

    $('.artistWrap .artistDates').css('display', 'none'); 
    e.preventDefault(); 
    $("div.firstDates").hide().html($(this.hash).html()).fadeIn('slow'); 


    var api = $('.artistBio').jScrollPane({ 
     showArrows: false, 
     verticalGutter: '1', 
    }); 
    api.reinitialise(); 
}); 

基本上這個代碼處理懸停動畫和click事件。正如你在代碼中看到的那樣,它也應該處理那些似乎不起作用的鼠標移出動畫。

任何有助於獲得初始化的權利,將不勝感激(如果你得到鼠標移出的東西也工作,你將成爲我的英雄)。

回答

1

前段時間我自己想出了它。看來我的.html() - 方法導致了這個問題。使用.load()工作得很好。所以這裏是更新的代碼

$(function() { 

    $('.artistBio').jScrollPane().data('jsp'); 

    $('div.artistImg a').hover(function(){ 

     ... 

     },function(){ 

      ... 

     }).bind('click', 
      function(e) 
      { 
       $('div.artistActive').removeClass('artistActive'); 
       $(this).parent().find('div.artistName').addClass('artistActive'); 

       $('.artistWrap .artistDates').css('display', 'none'); 
       e.preventDefault(); 



       // retrieve the current file's url as .load() seems to need it 
       var file = location.pathname.substr(location.pathname.lastIndexOf("/")+1,location.pathname.length); 

       $("div.firstDates").hide().load(file + " " + this.hash, 
         function() 
         { 
          $('.artistBio').jScrollPane().data('jsp').reinitialise(); 
         }).fadeIn("slow"); 



      } 

    ); 
0

據我所知,在點擊函數中初始化jScrollPane沒有任何理由。我把它放在點擊綁定之外,並將它放在document.ready的頂部,並做了一些清理,現在它工作正常。這裏有一個鏈接,顯示它現在如何設置:http://jsfiddle.net/WLfGv/

+0

感謝您的努力保羅,但初始化jScrollPane外點擊事件導致滾動條不工作。它是可見的,但它不可滾動(請參閱示例:http://herrmondl.multimediaart.at/_notwebsite/test/test2.html)。我之前就是這麼做的,但是我看了一下開發者網站,他說我應該爲動態更新的DIV重新初始化它。 – Major