3

すべてを歓迎する 、

画像スライダーに問題があり、ポーリングスクリプトが実行されるまで正常に実行され、その後停止し、両方のスクリプトを結合しようとしても機能しませんでしたが、noConflict を使用しようとしましたが、両方が停止しました。

これがスライダー

(function ($) {
    $.fn.s3Slider = function (vars) {
        var element = this;
        var timeOut = (vars.timeOut != undefined) ? vars.timeOut : 4000;
        var current = null;
        var timeOutFn = null;
        var faderStat = true;
        var mOver = false;
        var items = $("#sliderContent .sliderImage");
        var itemsSpan = $("#sliderContent .sliderImage span");
        items.each(function (i) {
            $(items[i]).mouseover(function () {
                mOver = true
            });
            $(items[i]).mouseout(function () {
                mOver = false;
                fadeElement(true)
            })
        });
        var fadeElement = function (isMouseOut) {
                var thisTimeOut = (isMouseOut) ? (timeOut / 2) : timeOut;
                thisTimeOut = (faderStat) ? 10 : thisTimeOut;
                if (items.length > 0) {
                    timeOutFn = setTimeout(makeSlider, thisTimeOut)
                } else {
                    console.log("Poof..")
                }
            };
        var makeSlider = function () {
                current = (current != null) ? current : items[(items.length - 1)];
                var currNo = jQuery.inArray(current, items) + 1;
                currNo = (currNo == items.length) ? 0 : (currNo - 1);
                var newMargin = $(element).width() * currNo;
                if (faderStat == true) {
                    if (!mOver) {
                        $(items[currNo]).fadeIn((timeOut / 6), function () {
                            if ($(itemsSpan[currNo]).css("bottom") == 0) {
                                $(itemsSpan[currNo]).slideUp((timeOut / 6), function () {
                                    faderStat = false;
                                    current = items[currNo];
                                    if (!mOver) {
                                        fadeElement(false)
                                    }
                                })
                            } else {
                                $(itemsSpan[currNo]).slideDown((timeOut / 6), function () {
                                    faderStat = false;
                                    current = items[currNo];
                                    if (!mOver) {
                                        fadeElement(false)
                                    }
                                })
                            }
                        })
                    }
                } else {
                    if (!mOver) {
                        if ($(itemsSpan[currNo]).css("bottom") == 0) {
                            $(itemsSpan[currNo]).slideDown((timeOut / 6), function () {
                                $(items[currNo]).fadeOut((timeOut / 6), function () {
                                    faderStat = true;
                                    current = items[(currNo + 1)];
                                    if (!mOver) {
                                        fadeElement(false)
                                    }
                                })
                            })
                        } else {
                            $(itemsSpan[currNo]).slideUp((timeOut / 6), function () {
                                $(items[currNo]).fadeOut((timeOut / 6), function () {
                                    faderStat = true;
                                    current = items[(currNo + 1)];
                                    if (!mOver) {
                                        fadeElement(false)
                                    }
                                })
                            })
                        }
                    }
                }
            };
        makeSlider()
    }
})(jQuery);

これが投票スクリプトです

window.onload = function() {
$(".sidePollCon").load("ar_poll.html", function(r, s, xhr) {

    if (s == "error") {
        $(".sidePollCon").load("poll.html");


    } else {
        $(".vote_booroo").html("صوت الان");
        $(".viewresults").html("شاهد النتيجة");
        $("fieldset p").html("");
        $(".results_booroo p").html("");
        $(".result_booroo").attr("src", "../images/poll_color.jpg");

    }

});

};
4

2 に答える 2

2

潜在的な問題の1つは、window.onload割り当てである可能性があります。非常に衝突しやすいです。

あなたがするたびにwindow.onload =、前の割り当ては上書きされます。ここでデモを参照してください:

出力はwindow.onload、jQueryの代替が呼び出されるのに対し、最初の割り当ては呼び出されないことを示しています。

jQuery.noConflictこの点ではほとんど何もしません。$別のlibがそれを使用できるように、シンボルをオーバーライドしないようにするだけです。

したがって、window.onloadイベントを使用してスライダーを呼び出す場合は、競合が発生します。jquery形式を使用すると、この問題を簡単に解決できます。

$(window).load(function() {
    ...
});

ただし、通常は、イベントを次の$(document).load(function(){...});形式または短い形式で結び付けます$(function(){...})

したがって、あなたの投票では次のようになります。

$(function(){
    $(".sidePollCon").load("ar_poll.html", function(r, s, xhr) {

        if (s == "error") {
            $(".sidePollCon").load("poll.html");


        } else {
            $(".vote_booroo").html("صوت الان");
            $(".viewresults").html("شاهد النتيجة");
            $("fieldset p").html("");
            $(".results_booroo p").html("");
            $(".result_booroo").attr("src", "../images/poll_color.jpg");

        }

    });
});

お役に立てば幸いです。

于 2012-06-03T16:43:01.253 に答える
1

jquery での競合の解決 (おそらく script.aculo.us のような別の JS ライブラリとの競合) は、noconflict() を使用して解決できます。

http://api.jquery.com/jQuery.noConflict/

$.noConflict();

ただし、JavaScript コード自体にエラーがないことを確認してください。スクリプトをテストするには、firebug と console.log('') を使用してください。

于 2012-06-03T04:18:30.677 に答える