2011-11-23 70 views
0

这是我下面的代码:为什么我的jQuery代码没有被调用?

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <script src="Scripts/jquery-1.7.js" type="text/javascript"></script> 
     <script> 
        $('target').submit(function() 
        { 
        alert('Handler for .submit() called.'); 
        }); 
     </script> 

    </head> 
    <body> 
     <form id="target" method="post"> 
      <input type="text" value="Hello there" /> 
      <input type="submit" value="Go" /> 
     </form> 
     <div id="other"> 
     Trigger the handler 
     </div> 
    </body> 
</html> 
+0

@BNL - 与您的编辑问题(因此该解决方案)不再清晰。这是有帮助的(要求,真的)看到完整的上下文,所以我们知道他没有使用document.ready。 –

+0

你说得对,回滚。 – BNL

回答

3

始终与文档准备功能包裹你的绑定方法:

<script> 
    $(function() { 

       $('#target').submit(function() 
       { 
       alert('Handler for .submit() called.'); 
       }); 
    }); 
    </script> 

编辑这是必要的,是因为如果你试图绑定前的文件准备好,有一个非常好的机会#target对象尚不存在。当然,你可以把它改为$(“#target”)。live(“submit”,function(){....但是,这对于如何解决这个问题并不是一个好主意。我上面显示。

+0

注 - 我也加入了散列标记,正如其他人提到的那样。 –

+0

+1好的catch在document.ready() – DefyGravity

+0

通知Jake在你的选择器中也加了'#'。这是解决方案的一部分。有关文档准备功能的更多信息,请访问http://docs.jquery.com/Tutorials:Introducing_$(document).ready() –

1

的主要问题是,你的选择是选择一个目标标签,而不是用目标的ID的元素,所以更改此:

$('target').submit(function() 

$('#target').submit(function() 

你的第二个问题是你应该让你的jQuery代码包装在DOM就绪事件中。

0

你错过了 '#' 号。

<script> 
        $('#target').submit(function() 
        { 
        alert('Handler for .submit() called.'); 
        }); 
     </script> 
0

因为执行此代码时不存在t arget呢。使用.ready()。也应该是$('#target'),因为id selectors应该以#为前缀。

$(function(){ 
    $('#target').submit(function() 
    { 
     alert('Handler for .submit() called.'); 
    }); 
} 
0

#在选择器中缺失。

$('#target').submit(function(){ }); 
0

使用这种方式:

<script> 
      $(document).ready(function() { 

       $('#target').submit(function() { 
        alert('Handler for .submit() called.'); 
       }); 
      }); 
    </script> 
相关问题