-2

私の会社は、デザインエージェンシーによって作成されたウェブサイトを持っていました。彼らはカスタム CMS を使用しているため、サイトの生のコードにアクセスするのは非常に困難です。画像スライダーで特定のバグを見つけようとしています。

http://informedfamilies.org/

スライダーのナビゲーション ボタン ("1,2,3,4,5") をクリックすると、スライドが適切な画像に切り替わりますが、それは初回のみです。別のボタンをもう一度クリックしても、スライダーは変化しません。画像の下の影が暗くなったように見えるので、画像が消えることはなく、単にメイン画像の下に積み重なっているだけだと思います。

この問題を解決するための助けをいただければ幸いです。

関連コード:

$('#home_features .listeditem').wrapAll('<div id="fade" />');
$('#fade').css('background', 'transparent');

var featureCt = $('#fade .listeditem').length;
if (featureCt > 1) {
    $('#home_features').each(function() {
        var controlDiv = $('<div />').attr('id', 'switcher');
        for (var i = 1; i <= featureCt; i++) {
            var control = $('<a href="#" class="selector" id="s' + i + '">' + i + '</a>');
            if (i == 1) control.addClass('selected first');
            if (i == featureCt) control.addClass('last');
            controlDiv.append(control);
        }
        $(this).append(controlDiv);
        controlDiv.append('<a href="#" class="selector" id="stop">||</a>');
        controlDiv.append('<a href="#" class="selector" id="start" style="display: none;">&#9654;</a>');
    });
}
$("#fade").innerfade({
    speed: 2000,
    timeout: 5000,
    containerheight: 440,
    tracker: "switcher",
    trackerclass: "selected",
    repeat: 1
});    
$(".selector").click(function() {
    if (this.id == "stop" || this.id == "start") {
        return;
    }

    if($("#fade").data("timer")) {
        clearTimeout($("#fade").data("timer"));
        $("#fade").removeData("timer");
        $("#stop").hide();
        $("#start").show();
    }

    var id = Number(this.id.substr(1));
    $(".selector").removeClass("selected");
    $(this).addClass("selected");

    $("#fade>div:visible").fadeOut(1);
    $("#fade>div.item" + id).fadeIn(1, function() {
        $('body').removeMatchedClasses({ pattern: /^slide/ });
        $('body').addClass('slide' + (id - 1));
    });

    var num = $("#fade").data("num_elements");
    if (id < num) {
        $("#fade").data("next", id);
    } else {
        $("#fade").data("next", 0);
    }
    return false;
});
$("#stop").click(function() {
    clearTimeout($("#fade").data("timer"));
    $("#fade").removeData("timer");
    $("#stop").hide();
    $("#start").show();
    return false;
});
$("#start").click(function() {
    $("#start").hide();
    $("#stop").show();
    $(".selector").removeClass("selected");
    $("#fade").innerfade({
        speed: 2000,
        timeout: 10000,
        containerheight: 440,
        tracker: "switcher",
        trackerclass: "selected"
    });
    var id = $("#fade").data("next");
    $("#s" + id).addClass("selected");
    return false;
});
4

1 に答える 1

0

スライダー メソッドは、site.js の 37 行目でインスタンス化されます。81 行目で、各セレクターをクリックすると、次のエラーが表示されます。

Uncaught TypeError: Object [object Object] has no method 'removeMatchedClasses' 

の関数宣言はありませんremoveMatchedClasses。それは単に存在しません。

彼らがやろうとしているのは、正規表現に一致するクラス/^slide/body.

私の推奨事項は、81 行目を次のように置き換えることです。

$('body').removeClass(function(i, c) {
  return c.match(/^slide/).join(" ");
});

これがどのように機能するか教えてください。

于 2012-08-09T14:00:13.957 に答える