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

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

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

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

解決済

1回答

760閲覧

Jqueryプラグイン【pagePiling】のtooltipを常に表示させたい

ayaka_000

総合スコア15

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2019/02/28 04:21

編集2019/02/28 04:39

pagepilingのナビゲーションについて、hoverするとtooltipが表示される仕様なのですが、
これを常に表示させたいです。

以下の部分を修正すればよいかと思ったのですが…

c.normalScrollElements

1 e.setMouseWheelScrolling(!1) 2 }), b(h).on("mouseleave", c.normalScrollElements, function () { 3 e.setMouseWheelScrolling(!0) 4 })); 5 var F = (new Date).getTime(); 6 b(h).on("click touchstart", "#pp-nav a", 7 function (a) { 8 a.preventDefault(); 9 a = b(this).parent().index(); 10 l(b(".pp-section").eq(a)) 11 }); 12 b(h).on({ 13 mouseenter: function () { 14 var a = b(this).data("tooltip"); 15 b('<div class="pp-tooltip ' + c.navigation.position + '">' + a + "</div>").hide().appendTo(b(this)).fadeIn(200) 16 }, 17 mouseleave: function () { 18 b(this).find(".pp-tooltip").fadeOut(200, function () { 19 b(this).remove() 20 }) 21 } 22 }, "#pp-nav li") 23 }

プラグインのURLは以下になります。
https://alvarotrigo.com/pagePiling/

HTML

<div id="pagepiling"> <div class="contents" id="section1"> <!--contents01--> </div> <div class="contents" id="section2"> <!--contents02--> </div> <div class="contents" id="section3"> <!--contents03--> </div> <div class="contents" id="section4"> <!--contents04--> </div> </div>   <ul id="menu">   <li data-menuanchor="page1" class="active"><a href="#page1">Page 1</a></li>   <li data-menuanchor="page2"><a href="#page2">Page 2</a></li>   <li data-menuanchor="page3"><a href="#page3">Page 3</a></li>   <li data-menuanchor="page4"><a href="#page4">Page 4</a></li>   </ul>

JavaScript

$(document).ready(function () { $('#pagepiling').pagepiling({ menu: '#menu', anchors: ['page1', 'page2', 'page3', 'page4'], navigation: { 'position': 'right', 'tooltips': ['section1', 'section2', 'section3', 'section4'] }, scrollingSpeed: 1000, sectionSelector: '.contents' }); });

jqueryのバージョンは1.9.1です。

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

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

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

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

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

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

m.ts10806

2019/02/28 04:23

これプラグイン本体のコードですかね。 念のため取得先(公式ページとか)のURLのリンク置いていただけますか? あと対象のHTMLと発火用JavaScriptの記述も
ayaka_000

2019/02/28 04:26

そうです。 URLは以下になります。 https://alvarotrigo.com/pagePiling/ <div id="pagepiling"> <div class="contents" id="section1"> <!--contents01--> </div> <div class="contents" id="section2"> <!--contents02--> </div> <div class="contents" id="section3"> <!--contents03--> </div> <div class="contents" id="section4"> <!--contents04--> </div> </div> $(document).ready(function() { $('#pagepiling').pagepiling({ menu: '#menu', anchors: ['page1', 'page2', 'page3','page4'], navigation: { 'position': 'right', 'tooltips': ['section1', 'section2', 'section3', 'section4'] }, scrollingSpeed: 1000, sectionSelector: '.contents' }); }); よろしくお願いいたします。
m.ts10806

2019/02/28 04:27

質問は編集できますので適宜追記いただければと。 こちらにコードを書かれてもマークダウンが使えませんので。
ayaka_000

2019/02/28 04:27

失礼いたしました。
m.ts10806

2019/02/28 04:29 編集

ちなみに、jQueryはどのバージョンをお使いですか?(も追記願います) 公式サイトでは1.8.3のようですが
ayaka_000

2019/02/28 04:31

追記しました。
m.ts10806

2019/02/28 04:33 編集

すみません。細かくて申し訳ないのですが、 HTMLとJavaScriptが別ファイルのなのでしたらコードブロックをわけてください。 「コピペでそのまま実行できる」が基本です。あとインデントはそろえられた方が良いですね・・。
m.ts10806

2019/02/28 04:37

pagepilingに指定されている#menu部分のHTMLも必要ですね。
m.ts10806

2019/02/28 04:38

回答者が補完しなければならない部分が多いとそれだけ的確な回答から離れていき、問題解決まで時間がかかってしまいます。
ayaka_000

2019/02/28 04:40

失礼いたしました。
guest

回答1

0

ベストアンサー

mouseenterをトリガーにツールチップが出るようになっていて、mouseleaveによりツールチップが削除されるようになっていますね。
しかも「this」なのでhoverした要素しか出るようになっていません。

設定でon/off切り替えがあるのかと思ったらそうでもないようです。
ということで、
下記はひとまずざくっとコメントアウト(削除だと何か起きたときにすぐ戻せないので)しましょう。

js

1/* 2 b(h).on({ 3 mouseenter: function () { 4 var a = b(this).data("tooltip"); 5 b('<div class="pp-tooltip ' + c.navigation.position + '">' + a + "</div>").hide().appendTo(b(this)).fadeIn(200) 6 }, 7 mouseleave: function () { 8 b(this).find(".pp-tooltip").fadeOut(200, function () { 9 b(this).remove() 10 }) 11 } 12 }, "#pp-nav li") 13*/

あとは、ナビゲーション部分の下記が元の処理からとれればいけそうです。
イメージ説明

下記のようにして動的要素が取得可能か確認

js

1$(function() { 2 $('#pagepiling').pagepiling({ 3 menu: '#menu', 4 anchors: ['page1', 'page2', 'page3', 'page4'], 5 navigation: { 6 'position': 'right', 7 'tooltips': ['section1', 'section2', 'section3', 'section4'] 8 }, 9 scrollingSpeed: 1000, 10 sectionSelector: '.contents' 11 }); 12 13 console.log($('#pp-nav li').length); 14}); 15 16//4 と出力された

内容を確認

js

1 console.log($('#pp-nav li')[0]); 2/* 3<li data-tooltip="section1"> 4 <a href="#page1" class=""> 5 <span style="border-color: rgb(0, 0, 0);"></span> 6 </a> 7</li> 8*/

これならなんとかなりそうですね。

あとは、#pp-navの子liをループして埋め込んでいく感じですね。
data-tooltipの文言が受け取れるか確認

js

1 $('#pp-nav li').each(function(index, element){ 2 console.log($(this).data("tooltip")); 3 }); 4 5/* 6section1 7section2 8section3 9section4 10*/

元の処理のmouseenter時の処理をもってくる

js

1 2 $('#pp-nav li').each(function(index, element){ 3 var tooltip = $(this).data('tooltip'); 4 $('<div class="pp-tooltip ' + options.navigation.position +'">' + tooltip + '</div>').hide().appendTo($(this)).fadeIn(200); 5 }) 6 7// Uncaught ReferenceError: options is not defined

options は確かに、pagepiling内で定義されている変数なので、スコープの関係で持って来れません。
ただ、これは設定部分そのままなので、とりあえず設定と同じものを固定で入れます。

js

1 $('#pp-nav li').each(function(index, element){ 2 var tooltip = $(this).data('tooltip'); 3 $('<div class="pp-tooltip right">' + tooltip + '</div>').hide().appendTo($(this)).fadeIn(200); 4 })

イメージ説明
hover時と同じところに挿入できたことを確認。


私のほうは本当に最低限の構成しかないので最後の画像にあるように文字色が白ですが、このあたりは調整かと思います。


蛇足:
optionsも含めていろいろ調整

js

1$(function() { 2 const pagepiling_setting = { 3 menu: '#menu', 4 anchors: ['page1', 'page2', 'page3', 'page4'], 5 navigation: { 6 'position': 'right', 7 'tooltips': ['section1', 'section2', 'section3', 'section4'] 8 }, 9 scrollingSpeed: 1000, 10 sectionSelector: '.contents' 11 }; 12 $('#pagepiling').pagepiling(pagepiling_setting); 13 14 $('#pp-nav li').each(function(index, element){ 15 var tooltip = $(this).data('tooltip'); 16 $('<div class="pp-tooltip '+pagepiling_setting.navigation.position+'">' + tooltip + '</div>').hide().appendTo($(this)).fadeIn(200); 17 }) 18});

イメージ説明

投稿2019/02/28 05:22

編集2019/02/28 05:39
m.ts10806

総合スコア80850

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

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

ayaka_000

2019/02/28 05:37

丁寧にご回答いただき、大変助かりました。 ありがとうございました。
m.ts10806

2019/02/28 05:40

最終形だけではなく、そこに至るまでの試行錯誤の過程も参考にしていただければと思います。 ※ただ、プラグイン本体に改修を入れるって動いていた機能に影響することもあって、かなり危険なことでもあるのでご注意ください。
ayaka_000

2019/02/28 05:49

ありがとうございました。 ちなみにですが、tooltipがactiveの状態のときに、色を変えるようにすることは難しいでしょうか…
m.ts10806

2019/02/28 05:58

activeな状態のときに となると、どういう操作をしたときになりますか?
ayaka_000

2019/02/28 06:00

ナビゲーションの●(pp-nav)は、該当するページにいるときは色が変わるようになっているのですが・・・ tooltipのフォントも同様に色が変えられると嬉しいです。
m.ts10806

2019/02/28 06:10

ああ、なるほど・・・tooltipも「今このページだよ」と分かるように、ですね。 色々やり方がありそうですねー。 bodyのclassの変化でイベントとるか、各tooltip配下のaタグにactiveがつくみたいだからそこの変化でイベントとるか はたまた、本体コードのactiveつけてるところに差し込むか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問