0

機能の初期パラメータを設定した後、それらを更新する方法がわかりません。

私はserialScrollというプラグインを使用しています。プラグインは、初期の$(elem).serialScroll({// ...})セットアップで示されたアイテムにスクロールします。

私がやりたいのは、ユーザーがページを操作するときにそのアイテムの名前を再定義することです。私は、ユーザーがスクロールするときに情報を正常に取得している別の変数を持っています。

私がやりたいのは、serialScroll({)}にその変数に応じて「item: _ 」フィールドを更新させることだけです。

serialScrollコードは次のとおりです。

    var nextClass = ".fig4"; 

    // this is being changed to .figN depending on the users 
    // scrolling position in the browser/viewport (successfully). 
    // For proof of communication purposes I forced nextClass 
    // here to equal .fig4 to see if the two are at lest talking to 
    // each other, which they are... but now how do i update "items:" 
    // below to reflect the change in the "nextClass" variable?

$('html').serialScroll({
    target:'body',
    items: nextClass, 
    next:'#nextImage',
    axis:'y',
    duration:700,
    force:true, 
});
4

2 に答える 2

1

ここで起こっていることは、.serialScrollが初期化されると、nextClassの値を1回取得し、それが使用する値になるということです。

2つのことのうちの1つが起こる必要があります。プラグインを変更してグローバル変数を使用するか(それほど理想的ではありませんが、機能します)、nextClassが変更されるたびに、.serialScrollを再初期化する必要があります。

于 2011-04-20T17:34:42.703 に答える
1

JavaScriptオブジェクトは動的であり、いつでもメソッドを追加できます。serialScrollは、呼び出される要素に動的に追加される一連の関数であるため、必要なことを実現するには2つの方法があります。

  1. プラグインコードにセッターを追加します-これにより、すべてのインストールで機能するようになります
  2. 初期化後、serialScrollのすべてのインスタンスにモンキーパッチを適用します

インスタンスが1つしかない場合は、後者の方が簡単で、上位互換性が高いことがわかります。

$('html').serialScroll({...});
$('html').serialScroll.setItems = function(i){
  items = i;
}
// when nextClass changes
$('html').serialScroll.setItems(nextClass);

最初のオプションを実行するには、serialScrollコード自体をハックする必要があります。

于 2011-04-20T18:04:17.420 に答える