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

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

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

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

jQuery

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

Q&A

解決済

4回答

3537閲覧

<li>タグのurlの取得について。よろしくお願い致します。

akagami_bb

総合スコア19

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/05/24 02:54

編集2016/05/24 02:56

いつもお世話になっております。
現在開いているページのurlと一致する<li>の文字色を変更する機能を作成しております。
下記のソースだと、クリックした<li>のurlを取得し、それの文字色を変更するという機能になってしまいます。

<li>をクリックせずに、現在のページのurlと一致する<li>の取得を行いたいのですが、知識不足で作成することが出来ませんでした。

ご教授よろしくお願い致します。

<!--HTML--> <ul id="pageList"> <li><a href="○○○">1</a></li> <li><a href="×××">2</a></li> </ul>
//JQuery $(document).on('click', '#pageList a', function() { //クリックした<li>のurlを取得 var val = $(this).attr("href"); //現在のページのurlと一致している場合 if (window.location == val) { $('#pageList a[href="' + val + '"]').parent().addClass('red'); } else $('#pageList a:eq(1)').parent().addClass('red'); });

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

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

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

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

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

guest

回答4

0

href 属性値は相対パス参照になりますが、href プロパティを参照すれば絶対URIになります。

HTML

1<ul id="pageList"> 2 <li><a href="aaa.html">aaa</a></li> 3 <li><a href="bbb.html">bbb</a></li> 4</ul> 5 6<script type="text/javascript"> 7'use stirct'; 8jQuery('#pageList>li>a').each(function (i, a) { 9 if (a.href === location.href) { 10 jQuery(a.parentNode).addClass('current'); 11 } 12}); 13</script>

Re: akagami_bb さん

投稿2016/05/24 05:25

編集2016/05/24 05:26
think49

総合スコア18162

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

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

akagami_bb

2016/05/24 07:02

ご回答ありがとうございます。 下記のコメントも読ませていただきました。仰るとおりで、そのパターンを考えておりませんでした。後ほど修正を行いたいと思います。 また機会がありましたらよろしくお願い致します。
guest

0

セレクタをうまく使うとこんなことも

javascript

1var url = window.location.href; 2$('#pagelist a[href="' + url + '"]').each(function(i, e){ 3 $(e).parent().addClass('red'); 4});

投稿2016/05/24 04:04

tkturbo

総合スコア5572

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

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

0

ベストアンサー

jQueryのready(fn)を利用すれば、画面が表示されたときの処理を記述できます。
http://semooh.jp/jquery/api/events/ready/fn/

javascript

1$(document).ready(function(){ 2 $('#pageList a').each(function(){ 3 var val = $(this).attr("href"); 4 5 if (window.location.href == val) { 6 $(this).parent().addClass('red'); 7 } 8 }); 9});

一箇所、元のソースに間違いを見つけましたので、修正しています。
window.locationwindow.location.href

投稿2016/05/24 03:48

rkojima

総合スコア421

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

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

akagami_bb

2016/05/24 04:32 編集

ご回答ありがとうございます。 一度試してみたいことがあり、 $('#pageList a').each(function(){ var val = $(this).attr("href"); → var val = $(this).attr("search"); に変更したところ、undefinedと出てしまいました。もしよろしければ、ご教授よろしくお願い致します。 ・hrefには、?○○と含まれています。
tkturbo

2016/05/24 04:35

aタグにsearchという属性がついてないので。。。>>akagami_bbさん
akagami_bb

2016/05/24 04:41

ご回答ありがとうございます。 なるほど・・・。勉強不足でした。 ということは linkのurl: /sampleBoard/index.do?pageNumber=1" 現在のurl: http://localhost:○○○○/sampleBoard/index.do?pageNumber=1 の二つを比べることは不可能でしょうか? 何度も申し訳ございません。
rkojima

2016/05/24 04:48

.attr() は、指定した属性の値を取得します。 `search`という属性が存在しないので、値が取得できず undefinedとなります。
akagami_bb

2016/05/24 05:18

ご回答ありがとうございます。 上記のサイトを参考にしたところ、無事解決することが出来ました! また機会がありましたらよろしくお願い致します。
think49

2016/05/24 05:51

ちょっと意地悪ですが、String.prototype.endsWith を使った場合、 http://localhost:○○○○/hogehoge/sampleBoard/index.do?pageNumber=1 にもマッチしてしまいますね。
guest

0

$(document).ready(function(){ $('#pageList a').each(function(){ var val = $(this).attr("href"); var url = $(location).attr('href'); if ((url.endsWith(val))) { $(this).parent().addClass('red'); } else $('#pageList a:eq(0)').parent().addClass('red'); }); }); String.prototype.endsWith = function(suffix) { var sub = this.length - suffix.length; return (sub >= 0) && (this.lastIndexOf(suffix) === sub); };

投稿2016/05/24 05:19

akagami_bb

総合スコア19

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問