Javascript 冲突 ajax 邮件和脚本

Javascript Conflict ajax mail and scriptaculous

本文关键字:脚本 冲突 ajax Javascript      更新时间:2023-09-26

我添加了一个在指南中找到的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 不是一个函数"当我尝试使用旧脚本时

旧代码看起来像是使用 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变量而不是$。但是,您仍然可以将$作为局部变量传入,并且它不会与原型冲突。

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