一回も披露したことのない豆知識

webサイトでjqueryを使うと普通のjavascriptのコードは使えなくなるのでしょうか?

ヘッダーのアコーディオンメニューを普通のjavascriptで作りました。

複数ページで共有したかったので、ヘッダー部分を分けてjqueryで読み込んだのですが、そうすると、アコーディオンのjavascriptが効かなくなります。

考えられる原因はなんでしょうか?

よろしくお願いいたします。

A 回答 (2件)

こんにちは



実際の内容が不明なので、原因となり得るものは多すぎますが・・・

まず、jQueryはjavascriptで描かれたライブラリですので、基本的には素のjavascriptと並行して使用することは可能です。
しかしながら、No1様もご指摘の様に内容的に競合するようなものを同時に使おうとするとうまくいかないのは、javascriptに限った話ではありません。

内容が不明なのでなんとも言えませんが、よく起こりそうな例を以下に挙げておきます。
 1)変数の競合
 2)実行順序が不整合

1)は同じ変数名を異なる複数の意味に利用してしまって、おかしくなるようなケースですが、jQuery本体ではjQeryと$以外はクローズドされた変数になっているはずですので、直接、競合することはなさそうに思います。
jQueryを利用したコードと、素のコードで変数が競合することは、起こる得るでしょう。

ご質問文を読んでいると、2)の方が怪しそうです。
 >ヘッダー部分を分けてjqueryで読み込んだのですが    --①
 >アコーディオンメニューを普通のjavascriptで作りました  --②
それぞれのスクリプトの実行順序が悪いと、有効に動作しないことでしょう。

例えば、②→①の順で実行すれば、当然ながら動作しません。
(作り方によりますが、②の実行中にエラーば出ている可能性が高い)
①→②の順に実行すれば良いかというと、①の処理方法によっては、②を続けて実行するとうまくいかない可能性があります。

①をどのようになっているかが不明ですが、非同期で読み込んでいるのであれば、読込み終了後に②を実行するようにしないと正しく動作しないと考えられます。
具体的には、①のcallback処理として②を実行するようにしておく必要があります。

情報がほとんど無いので、勝手な想像ではありますが、この(↑)あたりが一番怪しそうに感じられますが、いかがでしょうか?
    • good
    • 0
この回答へのお礼

普通のjavascriptをheaderに含めることで解決できました。
ありがとうございます(^-^)

お礼日時:2019/05/15 13:20

競合する機能をjsとjqueryで指定すればどちらかが効かないもしくは両方が効かない状況になりえます。


あとはソースがないので具体的な原因はわかりかねます
    • good
    • 0
この回答へのお礼

ありがとうございます。
ヘッダーに含めることで解決しました。

お礼日時:2019/05/15 13:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!