0

互いに競合していた2つのjQueryファイルがあります。エラーが発生していました:

Uncaught TypeError: Object 0px has no method 'css' 

多くの調整と調整を行った後、私はこれを解決する方法を見つけました。ただし、これは適切な解決策ではないと思います。別の適切な解決策についてフィードバックをお寄せください。

ファイルは、1)テンプレートから、2)スライドショーからのjQueryプラグインファイルです。画面のサイズが変更されると、コンテナとその他の要素の両方のサイズが変更されます。

問題の原因は、slideshowjqueryプラグインが次のように宣言していることです。

a.fn.cssOriginal = a.fn.css;

また、a [c] .css( "box-sizing")などが呼び出されているときはいつでも、テンプレートのjqueryファイルの行のエラーを読み取ることができます。

テンプレートのjquery関数ファイル全体で.cssOriginalを.cssに置き換えることで、これを解決しました。でも不安です。まず、スライドショーは一部のページでのみ使用されます。

tempalteの.css呼び出しがスライドショープラグインファイルの影響を受けるのをどのように防ぐことができますか?

スライドショーのすべてのjQueryファイルにはjQuery.noConflict()が含まれています。最後に。

テンプレートから、コードのこのセクションが競合の原因でした。

e.matchHeight = function (a, c, f) {
    var j = e(window),
        h = a && b[a];

    if (!h) {
        var h = b[a] = {
            id: a,
            elements: c,
            deepest: f,
            match: function () {
                var a = this.revert(),
                    b = 0;

                e(this.elements).each(function () {
                    b = Math.max(b, e(this).outerHeight())
                }).each(function (c) {
                    var d = "outerHeight";
                    "border-box" == a[c].css("box-sizing") && (d = "height");

                    var g = e(this),
                        c = a[c],
                        d = c.height() + (b - g[d]());

                    c.css("min-height", d + "px")
                })
            },
            revert: function () {
                var a = [],
                    b = this.deepest;

                e(this.elements).each(function () {
                    var c = b ? e(this).find(b + ":first") : e(this);
                    a.push(c.css("min-height", ""))
                });

                return a

            },
            remove: function () {
                j.unbind("resize orientationchange", k);
                this.revert();
                delete b[this.id]
            }
        }, k = function () {
            h.match()
        };

        j.bind("resize orientationchange", k)
    }

    return h
};

スライドショーから、コードのこのセクションが問題の原因です。

a.fn.cssOriginal=a.fn.css;

    a.fn.css=function(c,d){

        var e=this,f={};
        if(typeof c=="string")if(d)f[a.camelCase(c)]=d;
        else return e.cssOriginal(c);
        else f=c;
        f=a.cssPropertySupporter(f);
        var g=a("body").data("cssPerspective");
        if(f.transform)a.each(b,function(a,b){var c=b+(b?"T":"t")+"ransform";
        var d=f.transform;
        f[c]=(g&&!/perspective/gi.test(d)?"perspective("+g+") ":"")+d});
        e.cssOriginal(f); 
        return e

    }

ありがとうございました

4

2 に答える 2

1

最初にスライドショーjquery-pluginを含め、後でページにテンプレートjquery-pluginを含めていると思います。その場合、両方のプラグインの間に1つのライナーjava-scriptを含めることができますか?その1つのライナースクリプトには、次のようなものが含まれている可能性があります。

a.fn.css=a.fn.cssOriginal;

私はそれを試していませんが、これがうまくいくはずなので、試してみてください。

于 2012-09-01T04:22:47.600 に答える
0

これらのスクリプトは連携して機能することを目的としていますか?

私の知る限りvar e、両方に設定されているので、おそらく両者の間で問題が発生するでしょう。

別のスライドショープラグインを調べることをお勧めします。

于 2012-09-01T04:27:14.183 に答える