• 締切済み

jqueryのコードについて

$(function () { $("親要素").click(function () { window.location = $(this).find("a").attr("href"); return false; }); }); 上記jqueryのコードで 子要素のリンクを親要素に適用させていますが、 子要素にリンクがない場合も親要素にリンクが適用され クリックすると・・・/undefined にとばされます。 子要素にリンクがない場合は 親要素にリンクを適用しなようにするには どうしたらいいでしょうか。 お願いいたします。

noname#249922
noname#249922

みんなの回答

回答No.2

なんだぁ。それだけなら、 "親要素 A" だけでいいのでは? つまり、親要素の下にAがある物をセレクタにすればいいだけなのでは。 なので、 <div class="waa"> <div class="waa1"> <div class="waa2"> </div> という構造なら、 .waa .waa1 .waa .waa2 で分けれます。 あくまでwaa要素の中にあるwaa1やwaa2に対して発行してる という具合です。今回はIDやCLASSではなくタグそのものなので、 タグを書けばそれでOK。 console.logなどでリスナーがどう動いたかを確認しておくと 良いかと思います。

noname#249922
質問者

お礼

ありがとうございました

回答No.1

何がしたいのか、いまいちわからないのですが。 undefined が嫌なのであれば、  window.location = $(this).find("a").attr("href"); これを2個にわけて  let url=$(this).find("a").attr("href"); これが、undefinedではない時に、  window.location = url; じゃだめですか?

noname#249922
質問者

補足

同じ結果でした。 子要素にaタグ要素がない場合は リンクしないようにしたいです。 現状では下記のような場合も親要素にリンクがついてしまいます。 <div class="親要素"> <p>あいう</p> </div> javascriptなど無知なのですが aタグ要素がある場合→実行 aタグ要素がない場合→実行しない みたいなことができますか?

関連するQ&A

  • jqueryについて【初歩】

    見ていただきありがとうございます。 jqueryについて初歩的な質問です。 下記の記述は ひとつのボックスに対して内包するaタグのリンクを指定してボックスごとリンクにしているスクリプトになりますが、これにtargetの属性を付加させたいです。 しかしいろいろ試しましたがうまくいかず、ツンでます… jqueryに精通している方宜しければご回答いただけませんでしょうか? よろしくお願いいたします。 $(function(){ $(".sampleBox").click(function(){ window.location=$(this).find("a").attr("href"); return false; }); });

  • JavaScriptコードの最適化

    JavaScript、超初心者です。 よくわからないので、同じコード3つ書いています。 もっと簡単に最適化されたコードはどう書けばよいですか? 宜しくお願いします。 $(function () { $(".aaa").click(function(){ window.open($(this).find("a").attr("href"), '_blank'); return false; }); $(".bbb").click(function(){ window.open($(this).find("a").attr("href"), '_blank'); return false; }); $(".ccc").click(function(){ window.open($(this).find("a").attr("href"), '_blank'); return false; }); });

  • jQueryでdivごとリンクする際の開き方の指定

    jQueryでdivごとリンクする際に 新しいウィンドウで開くものと、同じウィンドウで開くものを分けたいのです。 下にコードを載せています。 素人なりにおかしいかと思っている点は、 同じfunction()を続けて使っているところです。 2つのスクリプトをそれぞれ1つだけ書いた時はうまく動作します。 どのように書いたらよいでしょうか? よろしくお願いいたします。 ●新しいウィンドウで開きたいdiv要素 aaa,bbb,ccc ●同じウインドウで開きたいdiv要素 ddd,eee ------------------------------------------- <script type="text/javascript"> $(function(){ $(".aaa,.bbb,.ccc").click(function(){ window.open ( $(this).find('a').attr('href'), 'newwin' ); return false; }); }); </script> <script type="text/javascript"> $(function(){ $(".ddd,.eee").click(function(){ window.open ( $(this).find('a').attr('href'); return false; }); }); </script> -------------------------------------------

  • jQueryでdivをクリックし別窓で開くには?

    jQueryでdiv全体をクリックできるようにできたのですが、 どうしても別窓で開く方法が分かりません。 もう、5時間ほど調べましたが、うまくいきません。 どなたか下のコードが別窓で開くように修正していただけませんでしょうか? よろしくお願いいたします。 <script type="text/javascript"> $(function(){ $(".sample").click(function(){ window.location=$(this).find("a").attr("href"); return false; }); }); </script>

  • jqueryについて

    jqueryについて こんな内容のjqueryをひとつにまとめて、なおかつ01~99(実績数)までのidを割り振る設定したいのですが可能でしょうか? 例えば $(function(){ $("#navi01-99 a").click(function(){ $("#main01-99 img").attr("src",$(this).attr("href")); return false; }); みたいな感じであとはidに番号を付ければいいみたいな・・・出来ませんでしょうか? 用途は仕事の制作実績で使用したいのですが、どなたか教えていただけますでしょうか? $(function(){ $("#navi01 a").click(function(){ $("#main01 img").attr("src",$(this).attr("href")); return false; }); }); $(function(){ $("#navi02 a").click(function(){ $("#main02 img").attr("src",$(this).attr("href")); return false; }); }); $(function(){ $("#navi03 a").click(function(){ $("#main03 img").attr("src",$(this).attr("href")); return false; }); }); $(function(){ $("#navi04 a").click(function(){ $("#main04 img").attr("src",$(this).attr("href")); return false; }); }); $(function(){ $("#navi05 a").click(function(){ $("#main05 img").attr("src",$(this).attr("href")); return false; }); });

    • ベストアンサー
    • AJAX
  • jqueryの質問。

    毎回、お世話になります。 jqueryを使ってリンク文字をクリックすると画像が変更できるようにしたいのですが、 上手くいきません。 <HTML> <body> <ul> <li><a href="DSC_0014.jpg">a</a></li> <li><a href="kamen.jpg">b</a></li> <li><a href="irumi.jpg">c</a></li> </ul> <p><img src="DSC_0014.jpg" width="1000" height="671"> <SCRIPT> $(function(){ ("a:eq(0)").click(function(){ $("img").attr("src","DSC_0014.jpg").attr("alt","人物"); return false }); $("a:eq(1)").click(function(){ $("img").attr("src","kamen.jpg").attr("alt","仮面"); return false }); $("a:eq(2)").click(function(){ $("img").attr("src","irumi.jpg").attr("alt","イルミ"); return false }); }); このコードだとリストa,b,cをクリックすると別ページに画像が表示されます。 その場での画像切り替えをしたいのですが、どこが間違っているのでしょうか? 宜しくお願い致します。

  • jQueryでクリックされた要素のidを関数で取得

    以下のようなソースで、クリックされた要素のidをアラートで出したいとき、class: alphabetのa要素ををクリックすると、undefinedと出ます。 関数でthisを使うと呼び出し元のことを指さないので、クリックされた要素のidは出ないということなのですが、こういった場合、クリックされた要素のidを取得して、表示したい場合はどのようにすればよいか教えてください。 [htmlソース] <a class='alphabet' id='a' href='' onclick="return false;">A</a> <a class='alphabet' id='b' href='' onclick="return false;">B</a> <a class='alphabet' id='c' href='' onclick="return false;">C</a> <script src="jquery.min.js"></script> <script type="text/javascript"> $(function(){ $('.alphabet').click(function(){ function alertAlphabet(){ alert($(this).attr('id')); }; alertAlphabet(); }); }); </script>

  • jQueryで困っています。教えてください。

    スムーススクロールを導入しようと、いろいろ調べて以下のものを参考にさせていただこうと考えています。どうゆう流れになっているのかを調べて分からないことがあったので投稿させていただきました。var target = jQuery(href == "#" || href == "" ? 'html' : href);この行の意味がわかりません。また、targetに何が代入されているのか分かりません。回答よろしくお願いします。 jQuery-------------------------------------------- //スムーズスクロール jQuery(function(){ // #で始まるアンカーをクリックした場合に処理 jQuery('a[href^=#]').click(function() { // スクロールの速度 var speed = 1000; // ミリ秒 // アンカーの値取得 var href= jQuery(this).attr("href"); // 移動先を取得 var target = jQuery(href == "#" || href == "" ? 'html' : href); // 移動先を数値で取得 var position = target.offset().top; // スムーススクロール jQuery('body,html').animate({scrollTop:position}, speed); return false; }); });

  • jqueryでリンクを無効にしたあとに有効にする方法

    jqueryで下記のコードでページ内のリンクを全て無効にしましたが、有効にする方法がわからずに困っております。 どなたかご教授ください。宜しくお願いいたします。 ↓コード↓ $("a[href]").click(function(e){e.preventDefault()}).attr("href","#");

    • ベストアンサー
    • AJAX
  • jQueryの隣接セレクターが上手く動作しない

    jQueryを用いてギャラリーのページを作成しています。 ページのイメージは上部にサムネイル画像が並べてあり、その下にクリックされたサムネイル画像に対応する大きな画像を表示するというものです。その中で隣接セレクターが上手く動作せず悩んでいます。どなたか教えていただきたく、よろしくお願いいたします。 具体的には HTML部分 <\-- サムネイル部分 --> <div id="navi"> <ul> <li> <a href="images/img1.jpg"><imgsrc="images/img1_thum.jpg" alt="作品1" /></a>  </li> : : </ul> </div> <\-- 大きな画像表示部分 --> <div id="main"> <img src="とりあえず最初の作品のパス" alt="最初の作品"/> </div> jQuery部分 $(function(){ $("#navi a").click(function(){ var filename=$(this).attr("href"); var altname=$("+img",this).attr("alt"); : : ここで、filenameには a要素のhref属性の値が入るのですが、altnameが undefined になってしまいます。 私は $("+img",this).attr("alt");  で  this (この場合はa要素)の次のimg要素のalt属性 (たとえば「最初の作品」)が返ると考えているのですがなにが間違っているのでしょうか?

専門家に質問してみよう