0

私はワードプレスのテンプレートに取り組んでいます。xhtml ファイルでは、jquery で問題はありませんでしたが、wordpress の非競合モードでは、コードでエラーが発生します。

これを競合しないように書き換えるにはどうすればよいですか?

//Fade in and out animation on hove buttons - meteo, and slide pagination balls
$(window).load(function() {
    $("ul.slidebtns li a").hover(function() {
        divW = ($(this).next("div").width() / 2) - ($(this).outerWidth() / 2);
        $(this).next("div").css({marginLeft: -divW }).animate({ opacity: "show" }, "fast");
    }, function() {
        $(this).next("div").animate({opacity: "hide"}, "fast");
    });

    $("#tempicon img").hover(function() {
            var $img = $(this);
            var $labelDiv = $img.next("div");

            var halfOfLabelDivsWidth = $labelDiv.width() / 2;
            var imgMiddle = $img.position().left + ($img.width() / 2);

            $labelDiv
                .css({
                    left: imgMiddle - halfOfLabelDivsWidth
                })
                .animate({ opacity: "show" }, "fast");
        }, function() {
            $(this).next("div").animate({opacity: "hide"}, "fast");
    });
});

すべての $ 記号を jQuery に変更する必要がありますか? 次のような部分だけを書き直そうとしました。

$(window).load(function() {
jQuery(window).load(function() {

$("ul.slidebtns li a").hover(function() {
jQuery("ul.slidebtns li a").hover(function() {

ただし、たとえば $(this) ではまだエラーが発生します...

4

1 に答える 1

0

エイリアシング クロージャでコードをラップします。

(function ($) {
    ...all your code here...
}(jQuery));

$これにより、クロージャ内でjQueryファクトリ関数への参照として使用できます。

すべてをクロージャにラップしたくない場合 (varたとえば、ステートメントは別のコンテキストに属している必要があるため、ステートメントに注意する必要があります)、 to のすべての使用法を変更する必要があります。$jQuery

さらに、 を使用していますが$(window).load、これは通常は不要です (実際に画像を読み込む必要がない限り)。document.ready代わりに、イベントをリッスンする必要があります。長い形式は次のとおりです。

jQuery(document).ready(function ($) {
    ...code...
});

しかし、それは通常、次のエイリアシングの省略形で使用されます。

jQuery(function ($) {
   ...code...
});
于 2012-10-02T17:04:05.910 に答える