質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

529閲覧

jQueryとmailgoが共用できない

A8-D

総合スコア8

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/03/02 05:54

迷惑メール対策にmailgo
レスポンシブのナビゲーションにbootstrapのNavbarを使って構築しています。
他に読み込んでいるjsもありますが、いくつかテストした結果、下記の組み合わせが動作しないことが分かりました。
他jsはあってもなくてもmailgoの動作に影響ありませんでした。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://unpkg.com/mailgo@0.6.7/dist/mailgo.min.js"></script>

jQueryのヴァージョンを変更する、jsファイルの読み込み順番を変える等しましたが全くダメでした。
javascriptにあまり詳しくないので、競合の原因が分かりません。
どなたか詳しい方がおられましたら教えていただけないでしょうか?
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2020/03/02 06:03

問題の生じている内容を再現できるソースコードを記載していただくことは可能でしょうか?
A8-D

2020/03/02 09:56

ここに掲載できるようにソースを編集し確認したら、違うjsファイルが競合していることが分かりました。 スムーススクロールの内容によって競合していたようです。 せっかくお声がけいただけたのに、こちらの些細なミスでお時間を取ってしまい申し訳ありません。
A8-D

2020/03/03 04:37

ご指摘ありがとうございます。 利用方法を知らず申し訳ありません。 教えていただきありがとうございました。
guest

回答1

0

自己解決

すみません、自己解決しました。

原因:スムーススクロールのjsとmailgoが競合しました。
解決策:スムーススクロールの内容を変更したらどちらも動作しました。

<詳細>
●最初に使っていたスムーススクロールとmailgoの組み合わせ

<script src="https://unpkg.com/mailgo@0.6.7/dist/mailgo.min.js"></script> <script> $(function(){ // 全てのアンカータグを対象にする $('a').click(function(e){ var anchor = $(this), href = anchor.attr('href'), pagename = window.location.href; // 現在のurlのハッシュ以降を削除 pagename = pagename.replace(/#.*/,''); // リンク先のurlから現在の表示中のurlを削除 href = href.replace( pagename , '' ); if( href.search(/^#/) &gt;= 0 ){ // 整形したリンクがページ内リンクの場合はページ無いスクロールの対象とする // 通常の遷移処理をキャンセル e.preventDefault(); var speed = 500; // 前段階で整形したhrefを使用する // var href= $(this).attr("href"); var target = $(href == "#" || href == "" ? 'html' : href); var position = target.offset().top; $("html, body").animate({scrollTop:position}, speed, "swing"); // ロケーションバーの内容を書き換え location.hash = href ; return false; } }); }); </script>

上記でmailgoがうまくいきませんでした。

●動作確認できたスムーススクロールとmailgoの組み合わせ

<script src="https://unpkg.com/mailgo@0.6.7/dist/mailgo.min.js"></script> <script> document.addEventListener("click", e => { const target = e.target; // clickした要素がclass属性、js-smooth-scrollを含まない場合は処理を中断 if (!target.classList.contains("js-smooth-scroll")) return; e.preventDefault(); const targetId = target.hash; const targetElement = document.querySelector(targetId); // 画面上部から要素までの距離 const rectTop = targetElement.getBoundingClientRect().top; // 現在のスクロール距離 const offsetTop = window.pageYOffset; // スクロール位置に持たせるバッファ const buffer = 50; const top = rectTop + offsetTop - buffer; window.scrollTo({ top, behavior: "smooth" }); }); </script>

投稿2020/03/03 04:35

A8-D

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問