• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQueryのclick(function()が動かない・・・?)

jQueryのclick(function()が動かない・・・?

このQ&Aのポイント
  • 質問の内容なのですが、1と2の間でエラーがあり、1のフォームに戻ってきた際にラジオボックスで「表示する」を選択していて、値もちゃんと「表示する」となっているのに、表示したい部分が非表示になってしまいます。
  • PHPでのエラー処理で値はちゃんと持ってきていることは確認しましたが、、、
  • 質問の内容は、jQueryのclickイベントが動作しない現象に関してです。特に、1と2の間でエラーがある場合にラジオボックスで「表示する」を選択しても、表示したい部分が非表示になってしまう問題が発生しています。PHPのエラー処理で値は正しく取得していることを確認しましたが、なぜ表示がされないのかが分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >はじめの、 >> $("#haiso").hide(); >を書いておかないと、一度表示された状態から閉じるような >ページアクションが起こってしまい不恰好だったので、 >こういう記述をしました。 2番目の意味が不明です。(あっても、今のところ悪さはしてないけど…) >前述のように初回表示時は表示されなくて良いのですが、 >(samecheckが1になるようにCheckedタグを入れているため) >エラーで返ってきた際に、samecheckが2を選択していても、 >ページロード時に表示されず困っているのです。。 2回目もphpから送り直しているのでしょうから、#1にも書きましたように『ページロード時』に実行されているのは、samecheckに関係なく、常に 非表示の処理です。 それなので、非表示になるのはまったく不自然ではありません。 スクリプトでその処理をしたいのなら、初回でも2回目でも(あるいは3回目でも)、ロード時に状態を判断して、表示/非表示を操作するようにしなければだめなはずでは?(現状は、常に非表示にしている) あるいは、別の発想としてphp側で対象divの表示状態を制御してあげれば、スクリプト側はイベント処理のみでもよくなりますよね? (jqueryのshow()、hide()はdisplay属性の設定を行っていたと思いますので、php側で属性をセットしてあげれば、スクリプトでは何もしなくても良くなります。)  ↑jqueryの内容を確認していないので、ちょっと曖昧

yuko8320
質問者

補足

> 2番目の意味が不明です。(あっても、今のところ悪さはしてないけど…) あっ。。 1 $("#hide").click(function(){ 2 $("#haiso").hide(500); 3 }); 4 $("#haiso").hide(500); 5 }); 6 </script> の4の部分が意味不明ということですよね? すみません。。私も意味不明でした。何故か入っていたので、 消しておきました。 > それなので、非表示になるのはまったく不自然ではありません。 ようやく意味が理解できました! JSすらまともに書けないのに、いきなりjQueryに手を出したばかりに とんちんかんなことを言ってしまい、申し訳ありません。 jQuery側でどうこうする処理を今すぐには思い浮かばなかったのですが、 PHP側でエラー処理を返す時に条件分岐させることでとりあえずは、 思い通りに動くようになりました。 ただ、jQueryで動かせないと勉強の意味がないので、 引き続き勉強しようと思います。 一旦は解決したということで、とんちんかんな質問に お答えいただきありがとうございました!!!

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

ご質問の意味を把握できてないけど… >表示したい部分が非表示になってしまいます。 表示したい部分ってどこのことでしょうか? <div id="haiso">のことなのかなぁ? だとすれば、スクリプトでロード時に実行されているのは、 $("#haiso").hide(); $("#haiso").hide(500); なので、表示されなくて当然ですよね? (同じ処理を2回書いている意味も不明ですが…)

yuko8320
質問者

補足

すみません。。説明が下手で。。 -------------------------   <div id="haiso">    <table>    </table>   </div> ------------------------- ↑の部分が表示したい部分で、テーブルの中身は 本当はあるのですが文字数の関係で省略してしまいました。 > だとすれば、スクリプトでロード時に実行されているのは、 > $("#haiso").hide(); > $("#haiso").hide(500); > なので、表示されなくて当然ですよね? > (同じ処理を2回書いている意味も不明ですが…) 同じ処理を2回書いているのですが、 はじめの、 > $("#haiso").hide(); を書いておかないと、一度表示された状態から閉じるような ページアクションが起こってしまい不恰好だったので、 こういう記述をしました。 前述のように初回表示時は表示されなくて良いのですが、 (samecheckが1になるようにCheckedタグを入れているため) エラーで返ってきた際に、samecheckが2を選択していても、 ページロード時に表示されず困っているのです。。

関連するQ&A