1

クリックで2つの機能を実行したい。別々に、両方ともうまく機能します。ただし、functionA の実行時と functionB の実行後に問題が発生します。

問題は関数 B に由来します。$(this) のせいだと思います。functionAで実行されたすべての先行変数のため、正しいIDを取得できません。$(this) による ID 呼び出しは #prev-ajax,#next-ajax でなければなりません。

ここにコード:

function A(){
    var link = $(this); 
    ajaxify(link.attr('href'));
    window.location.hash = link.attr("href");
    $('.link').removeClass('current');
}
function B(){
    e.preventDefault();
    var href = $(this).attr('href');
    var link = $(".link[href*= '" + href + "']:not(#prev-ajax, #next-ajax)");
    var $parent = link.parents('.element');
    var prev = $parent.prev().find('.link').attr('href');
    var next = $parent.next().find('.link').attr('href');
    $("#prev-ajax").attr( 'href', prev );
    $("#next-ajax").attr( 'href', next ); 
}
$("#prev-ajax,#next-ajax").click(A).click(B);

英語でごめんなさい、私はフランス人です

ロイク

4

1 に答える 1

1

これを一度試して、両方の機能を一緒に使用しても問題が発生するかどうかを確認してください。

$("#prev-ajax,#next-ajax").click(function (e) {
    e.preventDefault();
    var functionAlink = $(this);
    var functionBlink = $(this);

    // Function A code
    ajaxify(functionAlink.attr('href'));
    window.location.hash = functionAlink.attr("href");
    $('.link').removeClass('current');

    // Function B code
    var href = functionBlink.attr('href');
    var link = $(".link[href*= '" + href + "']:not(#prev-ajax, #next-ajax)");
    var $parent = link.parents('.element');
    var prev = $parent.prev().find('.link').attr('href');
    var next = $parent.next().find('.link').attr('href');
    $("#prev-ajax").attr('href', prev);
    $("#next-ajax").attr('href', next);
});
于 2013-03-27T23:23:13.993 に答える