jquery click()工作不一致

时间:2010-11-21 04:41:45

标签: jquery events click

我正在尝试对用户点击执行输入验证。但是jQuery click()函数的工作不一致;有时它的行为就像我期望的那样,有时点击链接除了将视口移动到屏幕顶部之外什么都不做。问题是我无法一致地复制错误;有时它有效,有时则不然。我已经在Windows XP的Firefox和Mac的Chrome 9.0上重现了它,但是,有时页面会起作用,有时它不会。有一次加载不正确我尝试清除缓存,再次加载页面,页面仍然没有加载。它似乎从未加载到加载,特别是在对文件进行大量更改后。

我在这里设置了一个简化的测试用例:http://kburke.org/thesis/consentform1.php。如果表单正常工作,它应显示一个警告框。这是代码:

<html>
<head>  
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){

    $("#submitlink").click(function(){
        console.log("link clicked");
        alert("Clicked!"); 
    });
    console.log("loading..."); 
});
</script>
</head>
<body style="width:35em; margin-bottom:200px;">
<input type="text" value="" name="part_name" id="name1" />
<input type="text" value="" name = "part_name2" id="name2" />
<input type="checkbox" name="accept_1" id="accept_1" />I signify my agreement that all matters and issues mentioned above have been discussed to my satisfaction and agreement.        <br><br>
<input type="checkbox" name="accept_2" id="accept_2" />I acknowledge that I am 18 years of age or older on the date of signing this consent, and that I have read and understood all of the above.</p>
<div id="submitlink" style="float:right; color:blue; text-decoration:underline; cursor:pointer;">I agree</div>
<form method="post" id="agree" action="/thesis/instructions.php">
  <input type="hidden" name="id" id="nextpage" value="">
  <input type="hidden" name="name" id="the_name" value="" />
</form>
</body>
</html>

感谢您提供的任何见解,尤其令我感到困惑的是行为不一致。

修改:有人建议console.log导致问题,但删除控制台语句后我仍然遇到问题。运行Chrome的JS调试器表明,当问题发生时,$("#submitlink")调用中的代码根本没有运行。像往常一样,我感谢你的帮助。

3 个答案:

答案 0 :(得分:3)

我注意到您的代码中有一些console.log()语句。我还注意到,当我打开Firebug时,你的代码工作正常。当我关闭Firebug时,代码无效。

console对象不是JavaScript本身的一部分;它是由Firebug(以及许多其他调试工具)创建的,用于替换批量alert调试方法。当Firebug关闭时,console.log()行会产生致命错误,从而阻止JavaScript执行。

答案 1 :(得分:1)

我解决了这个问题。 Google Voice Chrome Extension正在添加指向页面上电话号码的链接,这会干扰jQuery操作。重大测试,删除页面上的元素和禁用Chrome扩展程序都验证了扩展程序导致了问题。

下次我会尝试记住禁用所有扩展程序以查看是否导致问题。

我在此处提交了错误报告:http://code.google.com/p/chromium/issues/detail?id=64019

答案 2 :(得分:0)

删除console.log,因为console.log不会始终可用