3

我有一个正在更新的网页,这个页面使用 Prototype 和 Lightbox。我不想将当前页面更改为仅 jQuery,因为我不确定还有什么使用 Prototype 并且如果我不再包含 Prototype 会随后中断。

我的问题如下:

我有一些 TD,我想通过单击按钮淡入和淡出。当我暂时取出 Prototype 时,这非常有效。一旦我把 Prototype 放回去,fadeOut()jQuery 函数就完全中断了。我怀疑这是因为 Prototype 也有fadeIn()&fadeOut()功能。

有没有一种方法可以强制 Prototype 不将这些函数识别为它的函数,并且仍然让 jQuery 完美地执行它们?

这是我的 jQuery 代码:

var $j = jQuery.noConflict();

$j(document).ready(function () {    
    $j("a.archiveBtn.2009").click(function () {
        $j("td.archive.2009").fadeIn();
        $j("tr td.archiveBtn").css("paddingBottom", 20);
        $j("tr td.archiveBtn").css("borderBottom", "#999 1px dashed");
        $j("a.hideArchive.2009").show();

        return false;
    });

    $j("a.hideArchive.2009").click(function () {
        $j("td.archive.2009").fadeOut(function () {
            $j("tr td.archiveBtn").css("paddingBottom", 0);
            $j("tr td.archiveBtn").css("borderBottom", "none");
        });
        $j(this).hide();

        return false;
    });

    $j("tr td.archiveBtn").parent().prev("tr").children("td").css("paddingBottom", 20);
});

任何帮助将不胜感激,并提前感谢。

4

3 回答 3

1

您似乎已经尊重 jQuery 的冲突建议,也许可以尝试以下操作,它会在此处停用 Prototype 函数,但我真的不确定它是否能解决问题,因为我没有在您的代码中发现问题,但值得尝试:

jQuery(document).ready(function($) {
         $("a.archiveBtn.2009").click(function () {
 .....


}

有了这个,您可以直接使用 $ 而不是 $j 并且您确定它只是 jQuery 函数。顺便说一句,你完全打破是什么意思?动画很奇怪?它根本不褪色吗?

希望这可以帮助,

祝你有美好的一天(听 Carlos Jean ^^)

于 2010-06-28T10:21:32.640 回答
1

如果 jQuery.animate对您正常工作,那么您可以使用.animate({opacity: 0}).animate({opacity: "hide"})做同样的事情.fadeOut()

于 2010-06-28T10:37:03.470 回答
0

最后,我确定 Prototype.js 只是为了让 Lightbox 工作,所以我禁用了 Prototype.js 并合并了 Lightbox jQuery 插件。

我的代码现在可以完美运行。

于 2010-06-29T11:40:11.197 回答