Javascript/JQuery冲突

Javascript/JQuery冲突,javascript,jquery,Javascript,Jquery,我是个新手。我的页面上有两个javascript/jquery。如果我使用第一个脚本,第二个脚本就不起作用。如果我删除第一个脚本,第二个就可以了。我不知道如何解决这个问题。我知道有一个“没有冲突”的剧本。我试过了,但没有成功。我可能试错了。请有人帮帮我。我怎样才能同时运行它们?我已经在下面发布了这两个脚本: 脚本编号1: <script type="text/javascript" src="http://ajax.googleapis.com/ajax/ libs/jquery/1.3.

我是个新手。我的页面上有两个javascript/jquery。如果我使用第一个脚本,第二个脚本就不起作用。如果我删除第一个脚本,第二个就可以了。我不知道如何解决这个问题。我知道有一个“没有冲突”的剧本。我试过了,但没有成功。我可能试错了。请有人帮帮我。我怎样才能同时运行它们?我已经在下面发布了这两个脚本:

脚本编号1:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function(){
    $(".sign_in").click(function(){
        $("#sign_box").show();
        return false;
    });
    $("body #headerwrap").click(function(){
        $("#sign_box").hide();
        return false;
    });
});

</script>

$(文档).ready(函数(){
$(“.sign_in”)。单击(函数(){
$(“#签名框”).show();
返回false;
});
$(“body#headerwrap”)。单击(函数(){
$(“#签名框”).hide();
返回false;
});
});
脚本编号:2

<script language="javascript" type="text/javascript">

var fieldstocheck = new Array();
fieldnames = new Array();
function checkform() {
    for (i=0;i<fieldstocheck.length;i++) {
        if (eval("document.subscribeform.elements['"+fieldstocheck[i]+"'].value")==""){
            alert("Please enter your "+fieldnames[i]);
            eval("document.subscribeform.elements['"+fieldstocheck[i]+"'].focus()");
            return false;
        }
    }
    return true;
}
function addFieldToCheck(value,name) {
    fieldstocheck[fieldstocheck.length] = value;
    fieldnames[fieldnames.length] = name;
}
</script>

var fieldstocheck=新数组();
fieldnames=新数组();
函数检查表(){

对于(i=0;i页面上的第二个脚本在哪里?它需要更多关于它的信息才能看到发生了什么

第二个脚本看起来非常不祥,可能是非常古老的脚本。一些关注点:

  • 所有代码都会抛出到全局对象
  • 未声明字段名(缺少变量)
  • 使用[]声明数组可优先使用新的数组()语法
  • addFieldToCheck和checkform函数似乎没有被使用(至少在您发布的代码中没有)
  • 它使用的eval被认为是
为了有一个良好的开端,请尝试将第二个包装到自调用匿名函数中:

(函数(){
var fieldstocheck=[],
字段名=[];
函数检查表(){
//... 
}

}());
只是一个关于
eval
的注释。您不需要以使用eval的方式使用eval。您可以直接使用括号表示法:

eval("document.subscribeform.elements['"+fieldstocheck[i]+"'].value")

document.subscribeform.elements[fieldstocheck[i]].value
document.subscribeform.elements[fieldstocheck[i]].focus();

document.subscribeform.elements[fieldstocheck[i]].value
document.subscribeform.elements[fieldstocheck[i]].focus();
没有冲突

第一个脚本有一个click listeners,返回false。我假设登录按钮用于提交表单

单击事件返回false将阻止表单提交,这意味着执行路径永远不会在第二个脚本中输入函数

考虑删除返回值false

编辑: 这里有一些关于为什么返回false通常是不好的做法的更多信息(除非您确切知道自己在做什么以及为什么)


检查控制台-是否有任何错误?请注意,您使用的是非常旧的jQuery版本。检查所有可用版本是…显示此错误:未捕获引用错误:$未定义其他注意:删除
language=“javascript”
您不需要使用
jQuery.noConflict
,因为您只是使用javascript,使用jQuery与其他也使用
$
符号的js库没有冲突谢谢您有勇气详细解释:)非常感谢您的帮助。我使用了“e.preventDefault();”而不是“return false;”一切都很顺利。。。