3

編集: jQuery が SharePoint アナウンスメント リストから適切なマークアップを作成して jCarouselLite を使用する場合、これは問題ではありません。jCarouselLite 内の問題のようです。jQuery/javascript 変換コードではなく、適切なマークアップだけを使用して別の jsfiddle を実行しましたが、問題は引き続き発生します。

http://jsfiddle.net/ayatollah/6RKNx/で問題を確認できます。

繰り返しますが、これは 1 つまたは 2 つのリスト アイテムのみの問題です。3+ は正常に動作します。これを修正するために、マークアップ、jCarouselLite 呼び出しコードを変更する必要がありますか?

賞金は利用可能になり次第提供されます。

オリジナル================================================= ==============================

jCarousel に変換したい Sharepoint サイトにお知らせリストがあります。ulアナウンス リストはテーブルとしてレンダリングされるため、必要な構造に変換するためにいくつかの jQuery コードをまとめました。

jQuery は機能しているように見えますが、jCarousel は奇妙な動作をします。最初のアナウンスが正常に表示され、次に 2 番目のアナウンスが正常にスクロールされます。ただし、この後のスクロールごとに、最初のアナウンスが点滅し、2 番目のアナウンスがスクロールされます。最初にもう一度スクロールする必要がある場合。

正しく動作していましたが、空白のアナウンスが表示されていたので、空白のアナウンスを除外するコードを導入しました。問題を示すjsfiddleを次に示します。

http://jsfiddle.net/RzeEX/2/

前のコードから行った唯一の変更は、追加のブール値を追加することでした。

&& $(listitem).text() != "\xa0"

参照先: http://jsfiddle.net/RzeEX/3/

ただし、上記のフィドルでは、コードは前のものとまったく同じように機能しますが、私のサーバーでは余分な空白のアナウンスが表示されます。ここで複製できない理由がわかりません。

とにかく、誰かアイデアはありますか?

編集:実際には、2つ以上のアナウンスでテストしているだけで、うまくいくようです。http://jsfiddle.net/RzeEX/4/を参照

現在は期待どおりに動作していますが、2 つのアナウンスがあり、まだ壊れています。1 つのアナウンスがあり、何も表示されません! jCarouselLiteプラグインが機能すると私が信じているように、それはjQueryと関係があるに違いありません。

単一の発表については、http://jsfiddle.net/RzeEX/5/を参照してください。

4

4 に答える 4

6

要素の動的リストがある可能性があることは私の理解であるため、次のようなことができます。

$('.viewport').jCarouselLite({
    auto:1000,
    speed:1000,
    visible: $('#announcementList li').length
});

そうすれば、要素が 1 つ、2 つ、または 100 個あっても問題ありません。常に正常に機能します。

jsfiddle は次のとおりです: http://jsfiddle.net/XS87c/

于 2011-11-10T14:16:07.187 に答える
3

visible:2 を設定することで、望ましい結果が得られる可能性があると思います。

$('.viewport').jCarouselLite({
                    auto:5000,
                    speed:1000,
                    visible:2
              });   

うまくいかない場合はお知らせください。

于 2011-11-10T14:00:39.047 に答える
2

どれくらい見られたいですか?< # が表示されている場合、どのような動作が必要ですか。私はこの正確な問題に遭遇し、リストに < # が表示されている場合はカルーセルを適用しないことで解決しました。

このような何かがうまくいくはずです:

if ((document.getElementById('viewport') != null) && $('#announcementList').find('li').length >= 3 ) {
    $('.viewport').jCarouselLite({
        auto: 5000,
        speed: 1000
    });
}
于 2011-11-10T14:14:22.607 に答える
1

Irfan のソリューションを補完して、次のことができます。

if(document.getElementById('viewport') != null) {
     var options = {auto:5000,speed:1000}; 
     //Here we count the number of items and set it for a better display for 2 and 1 item
     if($('#viewport a').length <= 2) {
         options.visible = $('#viewport a').length;
     } 
     $('.viewport').jCarouselLite(options);     
}

したがって、要素が 1 つまたは 2 つある場合、表示されるのは 1 つまたは 2 つだけです。ただし、2 つ以上の要素がある場合は、3 つの要素しか表示されません。

于 2011-11-10T14:20:34.677 に答える