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

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

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

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

Q&A

4回答

5067閲覧

aタグクリックで取得したパラメータを付与したURLを組み立て、一度のクリックで動作させたいがどうしたらいいか?

sakura-shi

総合スコア93

jQuery

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

0グッド

0クリップ

投稿2018/03/19 16:49

編集2018/03/21 13:36

HTML

<a href="#" id="GRP01">AAAAAA</a> <a href="#" id="GRP02">BBBBBB</a> <a href="#" id="GRP03">CCCCCC</a> <div id="example-view"><iframe src="" data-src="http://www.foo.jp/view"></iframe></div>

JS

<script> $( function(){ $("a").click(function(e) { var id = $(this).attr("id"); if(id){ e.preventDefault(); getParam(id); } }); }); function getParam(id){ // http://www.foo.jp/view?param=id   へ遷移したい } </script>

●やりたいこと
HTMLのいずれかのaタグをクリックしたらgetParamを実行し、クリックして取得したidをパラメータにして
指定のURLを呼び出す
現状、パラメータ(aタグのid)を引き継げないで遷移していまいます。
URL自体はひとつで、一番問題になっているのはパラメータを取得できずに遷移してしまうこと。
必ず、パラメータ付きで遷移する方法はありますか?(遷移方法自体は、今は問題視していません。)
jsの書き方は合っているでしょうか?
以下の現状のように、パラメータがundefineになることは避けたいです。

●質問投稿時の状態
aタグをクリックすると、パラメータがundefineになりhttp://www.foo.jp/view?id=undefinedへ遷移してしまう。
必ず、パラメータ付きで遷移したいです。

●アドバイス後の現状
アドバイスいただいて上記のようにjsを修正しました。
今度は、2度クリックしないと期待どおり画面遷移しないという結果になり、新たな問題です。
つまり、「getParamが、2度クリックしないと実行されない」、これが大きな問題です。
どうしたら一度のクリックで期待どおりになるでしょうか?

どこを修正したらいいでしょうか?

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

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

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

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

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

kszk311

2018/03/19 17:08

記載のコードだけでは、遷移する処理が全く書かれていません。これで遷移するだろうと考えた現状のコードを記載してください。
sakura-shi

2018/03/20 00:17

JSとHTMLを少し編集しました。遷移自体はあまり問題視していなくて、問題は、パラメータを取得できずに(URLに引き継げずに)遷移してしまうことです。
guest

回答4

0

意図せず別のところに遷移するより、最初から書き換えておいたほうがいいかと。

JavaScript

1$(function(){ 2 $("a").each(function(index, element) { 3 if (element.id) { 4 element.href += '?param=' + element.id; 5 } 6 }); 7});

投稿2018/03/22 07:51

x_x

総合スコア13749

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

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

0

こんにちは。

以下にて、期待どおりの動作になると思います。

javascript

1$(function(){ 2 $('a').on('click', function() { 3 var href = $(this).attr('href') + '?param=' + $(this).attr('id'); 4 $(this).attr('href', href); 5 } ); 6});

  
以下、サンプルです。

https://jsfiddle.net/be7ev3au/9/

参考になれば幸いです。

投稿2018/03/19 22:17

編集2018/03/20 02:10
jun68ykt

総合スコア9058

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

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

0

セレクタであらかじめ限定しておいた方がいいかもですが、
範囲が$("a")で、対象がかなり広いかと思いますので、
IDが特に指定されていない時は通常のリンクとなるようにしています。
条件をどこまで細かくするか…

javascript

1$(function(){ 2 $("a").click(function(e) { 3 var id = $(this).attr("id"); 4 if(id){ 5 //if(id.match("GRP") !== null){/* 遷移する際のIDの文字列の条件(必要0. 番号リスト?) */ 6 e.preventDefault(); 7 8 //遷移処理 9 console.log(id); 10 11 return false; 12 13 //} 14 } 15 16 //条件にマッチしなければ通常リンク 17 }); 18})

投稿2018/03/20 02:05

kszk311

総合スコア3404

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

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

sakura-shi

2018/03/21 07:54

JSに詳しくないのですが、aタグを2度クリックしないと反応しない、という結果になりました。 2度クリックすると確かに期待した結果にはなります。 1度のクリックで操作できるようにするにはどうしたらよいでしょうか?
guest

0

イベントを止めればよいかもしれません

javascript

1$(function(){ 2 $("a").on('click',function(e) { 3 e.preventDefault(); 4 var id = $(this).attr("id"); 5 $( function(){ 6 getParam(id); 7 }); 8 }); 9 function getParam(id){ 10 console.log("param="+id); 11 } 12}); 13

投稿2018/03/20 01:05

yambejp

総合スコア114784

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問