0

少し問題があり、JQuery の知識を持つ人が私のコードを見て、私が間違っていることを見つけてくれることを願っています。ajax で更新される 2 つの順不同リスト (動的に作成) があります。以下のスクリプトを使用すると、更新するリストを 1 つだけ取得できますが、両方を取得することはできません。最初のスクリプトを複製し、2 番目のリストの変数を変更しましたが、更新されるのは 1 つだけです。助けてくれてありがとう。

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

  List one: <ul data-options="" class="elgg-list-mainriver elgg-sync elgg-list-river elgg-river"><li> .....</li>
</ul>

List Two:  <ul data-options="" class="elgg-list-miniriver elgg-sync elgg-list-river elgg-river"><li> .....</li>
</ul>

JQuery コード:

    elgg.provide('elgg.river');

elgg.river.init = function() {

    var riverList = $('ul.elgg-list-mainriver');
    //var miniriverList = $('.elgg-list-miniriver');
    var time = 20000;
    if (!window.rivertimer) {
        window.rivertimer = true;
        var refresh_river = window.setTimeout(function(){
            elgg.river.timedRefresh(riverList);
            //elgg.river.MinitimedRefresh(miniriverList);
        }, time);
    }
};

elgg.river.timedRefresh = function(object) {
    var first = $('li:first', object);
    if (!first.length) {
        first = object;
    }
    var time = first.data('timestamp');

    elgg.getJSON('activity', {
        data : {
            sync : 'new',
            time : time,
            options : object.data('options')
        },
        success : function(output) {
            if (output) {
                $.each(output, function(key, val) {
                    var new_item = $(val).hide();
                    //new_item = $(val).show();
                    object.prepend(new_item.fadeIn(600));
                    //object.prepend(new_item.$(val).show());
                });
            }
            window.rivertimer = false;
            elgg.trigger_hook('success', 'elgg:river:ajax');
        }
    });
}


elgg.provide('elgg.river_miniriver');

elgg.river_miniriver.init = function() {

    var miniriverList = $('ul.elgg-list-miniriver');
    var time = 20000;
    if (!window.rivertimer) {
        window.rivertimer = true;
        var refresh_river = window.setTimeout(function(){
            elgg.river_miniriver.timedRefresh(miniriverList);
        }, time);
    }
};

elgg.river_miniriver.timedRefresh = function(object) {
    var first = $('li:first', object);
    if (!first.length) {
        first = object;
    }
    var time = first.data('timestamp');

    elgg.getJSON('activity', {
        data : {
            sync : 'new',
            time : time,
            options : object.data('options')
        },
        success : function(output) {
            if (output) {
                $.each(output, function(key, val) {
                    var new_item = $(val).hide();
                    //new_item = $(val).show();
                    object.prepend(new_item.fadeIn(600));
                    //object.prepend(new_item.$(val).show());
                });
            }
            window.rivertimer = false;
            elgg.trigger_hook('success', 'elgg:river:ajax');
        }
    });
}

elgg.register_hook_handler('init', 'system', elgg.river.init);
elgg.register_hook_handler('success', 'elgg:river:ajax', elgg.river.init, 500);
elgg.register_hook_handler('init', 'system', elgg.river_miniriver.init);
elgg.register_hook_handler('success', 'elgg:river:ajax', elgg.river_miniriver.init, 500);

関数「$('ul.elgg-list-miniriver, ul.elgg-list-mainriver')」で両方のリスト クラスを結合しようとすると、両方のリストが更新されますが、最初のリスト項目 (li) は「不透明度:0」になります。 ;" スタイルで????

このコード:

elgg.river_miniriver.init = function() {

    var miniriverList = $('ul.elgg-list-miniriver, ul.elgg-list-mainriver');
    var time = 20000;
    if (!window.rivertimer) {
        window.rivertimer = true;
        var refresh_river = window.setTimeout(function(){
            elgg.river_miniriver.timedRefresh(miniriverList);
        }, time);
    }
};

elgg.river_miniriver.timedRefresh = function(object) {
    var first = $('li:first', object);
    if (!first.length) {
        first = object;
    }
    var time = first.data('timestamp');

    elgg.getJSON('activity', {
        data : {
            sync : 'new',
            time : time,
            options : object.data('options')
        },
        success : function(output) {
            if (output) {
                $.each(output, function(key, val) {
                    var new_item = $(val).hide();
                    //new_item = $(val).show();
                    object.prepend(new_item.fadeIn(1000));
                    //object.prepend(new_item.$(val).show());
                });
            }
            window.rivertimer = false;
            elgg.trigger_hook('success', 'elgg:river:ajax');
        }
    });
}
4

0 に答える 0