2012-01-17 9 views
0

jScrollPaneを使用して水平イメージスライダーを実装していて、horizo​​ntalDragMinWidth設定を使用してドラッグハンドル(.jspDrag)の最小幅を63に設定しようとしています。jScrollPaneのドラッグハンドルのサイズ変更

残念ながら、それはうまく機能していないので、なぜ私には分かりません。私は本当にいくつかの助けに感謝します。

問題はhttp://tmcdomains.com/jScrollPane/static.htmlで表示できます。

次のスクリプトは、単にタグの上に、私のフッターにある:

<script type="text/javascript"> 
$(function() { 
$("img").wrap('<div class="item" />'); 
var $conveyor = $("#conveyor"); 
var $item = $(".item", $conveyor); 
var $viewer = $("#viewer"); 
var api = $viewer.bind("jsp-scroll-x").jScrollPane({animateScroll: true,horizontalDragMinWidth: 63}).data("jsp"); 

var imagesWidth = 0; 
$($item).each(function (index, image) { 
    var $image = $(image); 
    imagesWidth += $image.outerWidth() + parseInt($item.css("margin-right"), 10); 
}); 
$($conveyor).width(imagesWidth); 

function scrollByItem(direction) { 
    var xPos = api.getContentPositionX(); 
    var viewerHalfWidth = $viewer.width()/2; 
    var pixels = 0; 
    $($item).each(function (i) { 
     pixels += $(this).outerWidth(true); 
     if (pixels >= (xPos + viewerHalfWidth)) { 
      if (direction == "right" && $item[i + 1]) { 
       api.scrollToX(($($item[i + 1]).outerWidth(true)/2) + pixels - viewerHalfWidth, true); 
      } else { 
       if (direction == "left" && $item[i - 1]) { 
        api.scrollToX(pixels - $(this).outerWidth(true) - viewerHalfWidth - ($($item[i - 1]).outerWidth(true)/2), true); 
       } 
      } 
      return false; 
     } 
    }); 
    return false; 
} 
$("#prev").click(function() { 
    scrollByItem("left"); 
}); 
$("#next").click(function() { 
    scrollByItem("right"); 
}); 

$viewer.each(
    function() 
    { 
     $(this).jScrollPane(); 
     var api = $(this).data('jsp'); 
     var throttleTimeout; 
     $(window).bind(
      'resize', 
      function() 
      { 
       if ($.browser.msie) { 
        // IE fires multiple resize events while you are dragging the browser window which 
        // causes it to crash if you try to update the scrollpane on every one. So we need 
        // to throttle it to fire a maximum of once every 50 milliseconds... 
        if (!throttleTimeout) { 
         throttleTimeout = setTimeout(
          function() 
          { 
           api.reinitialise(); 
           throttleTimeout = null; 
          }, 
          50 
         ); 
        } 
       } else { 
        api.reinitialise(); 
       } 
      } 
     ); 
    } 
);  

}); 
</script> 
+0

何がうまくいかないのかをデバッグするには、jscrollpane.min.jsを未使用のバージョンにスワップしてください。 –

+0

jscrollpane.jsの未確認バージョンを呼び出すようにファイルを更新しました... thanks Grace =) – tmc

答えて

1

私はあなたが二回にJScrollPaneを初期化している理由は非常に理解しない:

初めて:

var api = $viewer.bind("jsp-scroll-x").jScrollPane({animateScroll: true,horizontalDragMinWidth: 63}).data("jsp"); 

秒時間:

$(this).jScrollPane(); 

しかし、私はそれをデバッグした。 jScrollPaneが2回初期化されました(jScrollPane.jsの448行目から453行目を2回実行)。 2度目の初期化時には、horizontalDragMinWidthが設定の一部として指定されていないため、horizo​​ntalDragMinWidthはデフォルトで0です。私の勘違いは、これが問題だということです。

+0

こんにちはグレース、ありがとうございました。私のjQueryのスキルには、既存のプラグインを使用すること、いくつかのものを変更すること、そしてそれをうまく機能させることが含まれています...私はプラグインの開発者のウェブサイトからのいくつかの例から一緒に使用しているコードを敷き詰めました。 ** {animateScroll:true、horizo​​ntalDragMinWidth:63} **パラメータを2番目の呼び出しに移動すると、問題が解決されました。私はjScrollPaneを一度しか呼び出さないようにコードを再詰めようとしましたが、動作させることができませんでした。これらの行に沿った提案は非常に高く評価されます。そうでなければ、私は仕事がうれしい=) – tmc

関連する問題