0

我正在研究 wordpress 模板。在 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 回答