2011-11-23 127 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> 
相關問題