0

我添加了一个在指南中找到的 javascript 元素。如下

$(document).ready(function ()
    {
        $('.dropdownbutton').click(function ()
        {
        $.post("send.php", $(".mycontactform").serialize(),  function (data) 
            {   
            });
        $('#success').html('Message sent!');
        $('#success').hide(2000);
    });
});

现有的 javascript 是

        function toggleDisplayWait(divId, imgId, durationmSec) {
        if(!$(divId).visible()) {
            move = Effect.BlindDown;
            newImage = "./img/minus.png";
        }
        else {
            move = Effect.BlindUp;
            newImage = "./img/plus.png";  
        }        
        move(divId, {duration: durationmSec / 1000.0 });
        setTimeout(function() { $(imgId).src = newImage; }, durationmSec)
    }



function BDEffect(divId, imgId)
    {
        /* new Effect.BlindDown(element, {duration:3});
        }*/

        if(!$(divId).visible()) 
            {
                move = Effect.BlindDown;
                newImage = "./img/feedbacktab_open.png";
                setTimeout(function() { $(imgId).src = newImage; }, 0)
            }
        else 
            {
                move = Effect.BlindUp;
                newImage = "./img/feedbacktab.png";
                setTimeout(function() { $(imgId).src = newImage; }, 2)
            }        
            move(divId, {duration:2});
            /*setTimeout(function() { $(imgId).src = newImage; }, 0)*/
    }
</script>

但是旧代码和新代码现在都不起作用。

当我尝试使用旧脚本时,错误控制台现在报告“$(divId).visible is not a function”

4

1 回答 1

1

旧代码看起来使用 Prototype 框架,而新代码使用 jQuery。

当您将两者一起使用时,您需要使用 jQuery noConflict(),这样它们就不会都尝试使用该$变量。

首先,在包含 jQuery 库之后,添加如下脚本:

<script>
  jQuery.noConflict()
</script>

然后修改你的 jQuery 代码,如下所示:

jQuery(function ($) {
    $('.dropdownbutton').click(function() {
    $.post("send.php", $(".mycontactform").serialize(), function(data) {});
    $('#success').html('Message sent!');
    $('#success').hide(2000);
});

有了noConflict,在任何你想使用 jQuery 的地方,你都必须使用jQuery变量而不是$. 但是,你仍然可以$作为局部变量传入,并且不会与 Prototype 冲突。

另外,请注意,我将您的document.ready(function() { ... })函数更改为jQuery 的简写版本: jQuery(function() { ... })。该函数还将传递jQuery对象,我$为方便起见命名。

于 2012-05-02T22:51:03.317 回答