質問
$(function(){
})の中の処理の順番が分かりません。。。。
例えば、チェックボックスでアラートを出すとき、
チェックボックスに対して、changeとclickが指定できますよね。。。
html
1<input type="checkbox" id="check" value="チェック"> 2<span>チェックボックス</span>
↓こう書くと、アラートの順番は、、、
jQuery
1$(function(){ 2 $('#check').change(function(){ 3 $(function(){ 4 alert('change') 5 }) 6 }); 7 8 $("#check").on("click", function(){ 9 alert('click') 10 }); 11})
jQuery
1結果:アラート「クリック」→「チェンジ」
になるのですが、
↓こう書くと、
jQuery
1$(function(){ 2 $('#check').change(function(){ 3 alert('change') 4 }); 5 6 $("#check").on("click", function(){ 7 alert('click') 8 }); 9})
アラートの順番はこうなりました。。
jQuery
1結果:アラート「チェンジ」→「クリック」
どういう・・・
$(function(){ 処理 })の中にさらに
$(function(){ 処理 })がある場合、
一旦javascriptとしての処理はスキップされて、
全DOMが読み込まれてから最後に実行されるのでしょうか・・・?
補足情報(FW/ツールのバージョンなど)
対象ブラウザはIE11です。。。。
備考
基本中の基本、みたいな気がするのですが、
どなたか丁寧に教えていただけるとありがたいです。。。。
よろしくお願いします。;;;
$(function(){ ... } の使い方が間違っている気がします。
そこ普通の関数じゃだめなんですか?
大抵、$(function(){ ... } はjs内に一つあれば事足りるはずです
https://www.ipentec.com/document/javascript-jquery-doller-function-mean
ご指摘ありがとうございます;;
実は、実際の開発のほうでは$(function(){....})を1つにして解決しました。。
ですが、以前のプログラムでこのような書き方をしていたにも関わらず、
想定通りの動きをしていたので、
なぜかと思い質問させて頂きました;;
それは 【たまたま】そのように動いていただけかもしれません。
複数回思考したり、データ数が増えたりすると、非同期通信によって処理にずれが発生し、想定外の動作が起こる可能性があります。
普通の関数で問題ないのであれば、このような記述はしないことをオススメします。
(もちろん、意図してこうしているのであれば止めはしませんが。。。)
良ければなぜ $(function(){....}) を二重にしていたのか後学のため教えて頂けますか?
やはり、普通は2重にすることなんてないですよね;;
あ。。2重にしていた理由は、
maisumakunさんへの回答にもお返事させて頂いたのですが、
完全にただの勉強不足で、なんとなくまとまった処理の頭に $(function(){...})を
つけるようにしていた。。というだけです;;
(入力チェックなどの、何度も使用する処理を"関数化"したかったので、
$(function Chk(){ 入力チェック ...}) みたいになんとなく書いていました。。
当然、関数化はできていなかったので、意味はなかった上に、$(function(){...})を2重にして、ややこしいことになるという結果になってしまったのですが。。。)
関数化したい、というのであれば、恐らく関数化があやふやだっただけ、ということでしょうか・・・?
回答に関数化について記載しておきます
その通りです;;
「関数化したいけど、どう書けばいいのかわからないな・・・とりあえずfunctionつけて名前つけておけばいいか...またあとで調べて直しておこう」みたいな発想でした。。。
すみません;;わざわざありがとうございます;;;
とてもありがたいです;;おねがいします。
jQuery とか javaScriptって最初は似たような記述ばっかりだしよくわかんないですよねー...(気持ちはよくわかります)
でも関数化したいという試みは凄く良いと思うので今回で関数の使い方がマスター出来ればもう完璧ですね◎
優しいご意見をありがとうございます;;
何度も同じ処理を書いていると、jQueryの部分が長くなってしまって、、
どうにかならないかなと思っての試みでした。。
ありがとうございます!マスターできるよう、引き続きがんばります。。。!!
回答5件
あなたの回答
tips
プレビュー