入力フォームを作成しました。
radioボタンにjQueryを使ってイベントを登録し
ページを読み込んだ後に動かそうとしています。
HTML
1<html lang="ja"> 2 <head> 3 <meta charset="utf-8"> 4 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 5 </head> 6<body> 7 <input type="radio" name="mail" value="1" checked>メール1<br> 8 <input type="radio" name="mail" value="2">メール2 9 <script> 10 $(function(){ 11 $('input[name=mail]').on('change',function(){ 12 //途中でイベントを登録 13 alert('イベント実行'); 14 }); 15 }); 16 </script> 17 <!-- 18 その後あれこれとHTMLを記述して 19 ~ 20 ~ 21 ~ 22 --> 23 <script> 24 //最後にイベントを発火させようとしている 25 $(window).on('load',function(){ 26 alert('test'); 27 $('input[name=mail]:checked').change(); 28 }); 29 </script> 30</body> 31</html>
このやり方だとradioボタンのイベントはどうにも動いてくれません。
ちなみにalert('test')は表示されるのでコードは動いていますしエラーにもなっていません。
悩んだ末にイベントを登録した直後だと動くことがわかりました。
HTML
1<html lang="ja"> 2 <head> 3 <meta charset="utf-8"> 4 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 5 </head> 6<body> 7 <input type="radio" name="mail" value="1" checked>メール1<br> 8 <input type="radio" name="mail" value="2">メール2 9 <script> 10 $(function(){ 11 $('input[name=mail]').on('change',function(){ 12 //途中でイベントを登録 13 alert('イベント実行'); 14 }); 15 //ここだと動く 16 $('input[name=mail]:checked').change(); 17 }); 18 </script> 19</body> 20</html>
質問しようと試しているうちに解決してしまったのですが
最初の書き方だとなぜイベントが動かないのかわかりません。
同じ$(function)内に書かないとイベントが発火しないものでしょうか?
jqueryのバージョンはLaravelに同梱されていた3.2.1です。
回答2件
あなたの回答
tips
プレビュー