2011-05-26 10 views
0

このコードがなぜこのコードworksがよくわからないのですか?コードjqueryのバグ

ですが、以下のコードはありません。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

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


<script type="text/javascript"> 
$('#enviar').click(function(){ 
    alert ("casd"); 
}); 

</script> 

</head> 
<body> 

    <input type="submit" id="enviar" value="Registo" /> 

</body> 
</html> 

何故ですか?

+1

ソリューションは、文書が、このようなjqueryのレディ機能を使用してロードされた後にハンドラをアタッチするのですか?どのようなエラーが出ますか? –

+0

エラーはありません。ボタンをクリックすると何も起こりません。 FF4とchromeでテストされました –

+1

なぜjsfiddleが動作するのかを知ることができます:左上隅を見ると、 'onLoad'と書かれた選択ボックスがあります。つまり、ページ全体が読み込まれた後にJavaScriptコードが実行されます。あなたのコードは 'no wrap(head)'を選択したのと同じで、うまくいきません。 –

答えて

4

要素が存在する前にハンドラがアタッチされています。どちらか$.live()にスイッチや準備文書にあなたのコードを実行します。

$(function(){ 
    // attach click here 
}); 

これは、ドキュメントがロードされており、そして、あなたの#enviar要素がDOM内に存在するまで待つためのコードが発生します。それが存在するまで、何もそれに付けることはできません。

+0

はい、私の問題を解決してください、ありがとうございます –

+0

@ワイヤー私たちはここに助けています:) – Sampson

2

クリックイベントハンドラをアタッチすると、ドキュメントがまだロードされていません。つまり、< input>要素はその状態では使用できません。何が起こる

$(document).ready(function(){ 
    $('#enviar').click(function(){ 
    alert ("casd"); 
}); 
関連する問題