1

最近、作成したアプリに無限スクロールをデプロイしましたが、何かが起こるために 2 回クリックする必要がある場合があることがわかりました。

私のアプリにはいいねがあり、dom がロードされたら、変更する前にいいねボタンを 2 回クリックする必要があります。 "

より良い解決策はありますか?

$(document).ready(function() {
    function runUpdate(url, item) {
        $.ajax({
            type: "GET",
            url: url,
            cache: false,
            success: function(data){
                if (data == '200') {
                    removeAddColor(item);
                }
            }
        });
    }

    $('.mini-like').live('click', function(){
        $('.mini-like').toggle(
            function() {
                var item = $(this);
                var href = item.attr('href');
                runUpdate(href, item);
            },
            function() {
                var item = $(this);
                var rel = item.attr('rel');
                runUpdate(rel, item);
            }
        );
    });

    function removeAddColorFollow(item) {
        var href = $(this).attr('href');
        var rel = $(this).attr('rel');
        if (item.hasClass('btn-success')) {
            $(item).removeClass('btn-success').attr('href', href).attr('rel', rel);
            $(item).find('i').removeClass('icon-white');
        } else {
            $(item).addClass('btn-success').attr('href', rel).attr('rel', href);
            $(item).find('i').addClass('icon-white');
        };
    }
});
4

2 に答える 2

1

私が完全に間違っていない限り、トグルイベントを.mini-likeにアタッチするのは、一度クリックした後だけです。ただ交換してみてください

$('.mini-like').live('click', function() {...

$(function() {...

クリックする代わりにドキュメントレディにトグルイベントハンドラーをアタッチするには

于 2012-05-28T10:22:49.107 に答える
0

コード$('.mini-like').live('click',...は内部に配置する必要があります$(document).ready()

.onの代わりに使用できます.live.on新しいメソッドであり、現在.liveは非推奨になっているため、次を使用する必要があります.on

更新書き直さ れたバージョンは

$(document).ready(function(){
 $('.mini-like').on('click', function(){
    $('.mini-like').toggle(
        function() {
            var item = $(this);
            var href = item.attr('href');
            runUpdate(href, item);
        },
        function() {
            var item = $(this);
            var rel = item.attr('rel');
            runUpdate(rel, item);
        }
    );
 });

});

function runUpdate(url, item) {
    $.ajax({
        type: "GET",
        url: url,
        cache: false,
        success: function(data){
            if (data == '200') {
                removeAddColor(item);
            }
        }
    });
}


function removeAddColorFollow(item) {
    var href = $(this).attr('href');
    var rel = $(this).attr('rel');
    if (item.hasClass('btn-success')) {
        $(item).removeClass('btn-success').attr('href', href).attr('rel', rel);
        $(item).find('i').removeClass('icon-white');
    } else {
        $(item).addClass('btn-success').attr('href', rel).attr('rel', href);
        $(item).find('i').addClass('icon-white');
    };
}
于 2012-05-28T10:17:24.847 に答える