0

私はtumblrページでこのスクリプトを使用しています。これにより、投稿にさまざまなランダムなテキストの色が与えられます。

function get_random_color() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
    color += letters[Math.round(Math.random() * 15)];
}
return color;}
$(function() {
$(".post").each(function() {
    $(this).css("color", get_random_color());
}); });

問題は、無限スクロールでロードされた要素に対してスクリプトが機能しないことです。このコードを書き直すのを手伝ってくれる人はいますか? 悲しいことにjavascriptの書き方がわかりません。

4

1 に答える 1

0

ブログのmain.jsスクリプトを見てみましょう。別のページから新しい要素を取得するときに、カスタム関数を呼び出すことができます。main.jsこれは、あなたのファイルの私が提案したリビジョンです。

$(window).load(function () {
var $wall = $('#content');
$wall.imagesLoaded(function () {
    $wall.masonry({
        itemSelector: '.post',
        isAnimated: false
    });
});
$wall.infinitescroll({
    navSelector: '#pagination',
    nextSelector: '#pagination li a.pagination_nextlink',
    itemSelector: '.post',
    loadingImg: "http://static.tumblr.com/kwz90l7/bIdlst7ub/transparent.png",
    loadingText: " ",
    donetext: " ",
    bufferPx: 100,
    debug: false,
    errorCallback: function () {
        $('#infscr-loading').animate({
            opacity: .8
        }, 2000).fadeOut('normal');
    }
}, function (newElements) {
    var $newElems = $(newElements);
    $newElems.hide();
    $newElems.each(function(value){
        value.css("color", get_random_color());
    });
    $newElems.imagesLoaded(function () {
        $wall.masonry('appended', $newElems, {
            isAnimated: false,
            animationOptions: {
                duration: 900,
                easing: 'linear',
                queue: false
            }
        }, function () {
            $newElems.fadeIn('slow');
        });
    });
    $(document).ready(function () {
        $("a[rel^='prettyPhoto']").prettyPhoto({
            deeplinking: false,
            default_width: 600,
            default_height: 550,
            allow_resize: true,
        });
    });
});
$('#content').show(500);
});

function get_random_color() {
    var letters = '0123456789ABCDEF'.split('');
    var color = '#';
    for (var i = 0; i < 6; i++ ) {
         color += letters[Math.round(Math.random() * 15)];
    }
    return color;
 }

私がやったことは、あなたのget_random_color関数を追加し、無限スクロール呼び出し内から呼び出して、各要素にカスタムカラーを追加する$newElemsことですこれは機能していませんでした。これは、理論的には機能するはずです。そうでない場合、または質問がある場合は、お知らせください。

于 2012-09-21T22:17:18.910 に答える