• ベストアンサー

jQuery タグで囲まれたテキストを取り出す方法

たとえば this.innerHTML の中身が "<span>xxx</span>yyy" の場合、 xxxだけを取り出す場合はどうすればいいですか? たとえば、 this.find("span").innerText jQuery("span", this).get(0).innerText とかかなり色々なコードを試したんですが無理でした。。 詳しい方、教えてください。。 全体のコード obj.parents().map(function(){return this.innerHTML;}).get().join(" "));

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

obj.parents()の中のspan要素ってことでしょうか? 一番外側のparentだけで充分とは思いますが、  obj.parents().find("span").map(~~~ で、対象がspanに絞られますけれど、そういうことではないのかしらん。

peekpoke
質問者

補足

fujilinさんありがとうございます。 改て、もうすこし具体的に質問の内容を書き直しました。。 わかりにくかったかもしれません。すいませんです。。 <ul> <li><span>xxx</span> <li><a>aaa</a></li> </li> </ul> <ul> <li><span>yyy</span> <li><a>bbb</a></li> <li><span>zzz</span> <li><a>ccc</a></li> </li> </li> </ul> ツリー構造になっていて、すべてのノード名は処理しやすいように <span>で囲ってあります。 でそれぞれのリーフに対して親を辿りながらそのノード名をくっつけていく処理を作っていました。 <script> jQuery("li a", document.body).each(function(){ var obj = jQuery(this); obj.attr('href',"http://abc/?get="+ obj.parents("li a").map(function(){return this.innerText;}).get().join(" ")) // <- ここの記述に関しての質問でした }) </script> 上記のコードを実行すると各親のすべての文字列がくっついてくるため <span>だけをくっつけたいというのが質問でした。。 で、理想的には以下のような感じにすればspanのテキストだけくっつけられるのかな? obj.parents("li a").map(function(){ return this.find("span").innerText;}).get().join(" ")) と思ったのですがこれもエラーでした。。 fujillinさんのおっしゃいってとおりに、 obj.parents("span").map(funtion(){return this.innerText;}).get().join(" ")) にしてみたら、""が帰ってきました。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • AtomでjQueryは使えますか?

    ローカルフォルダ内にindex.html、contact.html、style.css、contact.css、script.js、5つのファイルを作成し、Atomでコーディング中です。 index.htmlとcontact.htmlの<head></head>内で<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>とし、</body>直前で<script src="./script.js"></script>、又、script.jsに$(function(){この中にコード});と記述。 (1)まずここで質問ですが、これでjQueryの使用環境は整ってますでしょうか? 続きまして、先ほどの質問内容とは違ってしまいますが、アコーディオン作成のため、index.html内の <div class="qa">  <h1 class="question-text"> <span class="fa fa-question-circle"></span> 名前は何ですか?  </h1> <span id="up" class="fa fa-angle-up"></span> <p class="answer-text">ほげほげです。</p> </div>に対してscript.jsにて $('.question-text').click(function(){ var $answer=$(this).parent().find('.answer-text'); if($answer.hasClass('open')){ $answer.removeClass('open'); $answer.slideUp(); $(this).parent().find('#down').html('<span id="up" class="fa fa-angle-up"></span>'); }else{ $answer.addClass('open'); $amswer.slideDown();   $(this).parent().find('#up').html('<span id="down" class="fa fa-angle-down"></span>'); } }); と記述。→グーグルのブラウザで確認。→クリックしても動かない。 という状況です。 (2)ここでまた質問ですが、(1)の時点でjQuery使用環境が整っていれば、動かない理由は単に私のコードが間違っている事になる訳ですが、どうでしょうか・・・? ご意見賜りたくお願い申し上げます。

  • jQueryで、指定した要素の子要素の値を取得

    <form>  <section><span class="area">大阪</span> ・jQueryで、上記の「大阪」を取得するにはどうすれば良いでしょうか? ・既に「.find('section')」で、$(this)に<section>タグを取得しているのですが、その下のspanタグ内にある値、というやり方で取得するにはどう書けば良いでしょうか? $(this).children.value とかやってもうまくいきませんでした

  • htmlのformの表示について【Jquery】

    <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script> <script type="text/javascript"> function formChanged(ev){ var sel = $('.chk:checked').map(function () { return this.checked ? this.value : null; }).get().join(); $("#output").text(sel); } formChanged(null); $(document).on("change",'.chk:checked',formChanged); </script> <form method="post" action="mail.php"> <table> <tr> <th>カテゴリー</th> <td> ・ABC: <input type="checkbox" name="カテゴリー[]" value="[abc]" class="chk" /> ・DEF: <input type="checkbox" name="カテゴリー[]" value="[def]" class="chk" /> ・GHI: <input type="checkbox" name="カテゴリー[]" value="[ghi]" class="chk" /> </tr> <tr> <th>選択した製品シリーズ</th> <td><span id="output"></span></td> </tr> <tr> </table> </form> これは、チェックボックスにチェックをいれたチェックボックスの値がリアルタイムに表示される仕組みなのですが、逆にチェックを外した場合は、値が消えません。消えるようにするにはどうしたらいいでしょうか。アドバイスをいただけると幸いです。

  • Jqueryを使った特定語句の自動タグ付与について

    ### 前提 ワードプレス記事内の指定した特定語句にjQueryを使って自動で<span>タグとクラスを付与することによって自動で特定語句をハイライト(強調)しています。 このコードはjavascript.js内に記述しており全てのページに反映されます。 ### 実現したいこと ①類似した語句に自動で<span>タグを付与しないようにしたい(これは正直難しい) ②もっと簡単な方法で特定ページでは動作しないようにしたい ### 発生している問題・エラーメッセージ ①下記例の場合、 "トロ"という語句に<span>タグを付与している場合、 "トトロ"という語句がくると"トロ"だけ反応してしまい ト"トロ" のように意図せぬ場所でハイライトされてしまいます。 ②数百あるページのうち数ページはハイライトが不要なのですが javascript.jsに記述してある為、不要でも無効化することができません。 全ての個ページにそれぞれ記述すれば解決しますがハイライトが必要/不必要なページの比率的に現実的ではありません。 ``` ### 該当のソースコード jQuery().ready(function($) { $('p').each(function() { var txt = $(this).html(); $(this).html(txt .replace(/トロ/g,'<span class = "Ptext">トロ</span>') .replace(/サーモン/g,'<span class = "Ptext">サーモン</span>') .replace(/トト/g,'<span class = "Ptext2">トト</span>') ); }); }); ``` ### 試したこと ①クラス名は適当ですがこの場合、トロという語句に対してPtextで強調したい色やサイズでcssを指定します。  次にトトロで反応しないようにトトという語句に対してPtext2で通常フォントを指定して他の語句も見つけ次第展開していきます。 ②ハイライト不要ページ内ではPtextを全てPtext2に書き換えて記述します。 よろしくお願いいたします。

  • jquery の clickイベント

    いつもお世話になっております。 当方jQueryは初めてで試行錯誤しながら使っています。 標題について質問です。 <form> <input type="text" id="code[1]" value="00001"> <input type="submit" id="add[1]"> <input type="submit" id="del[1]"> </form> 上記のフォーム文で、 jQuery.noConflict(); jQuery(document).ready(function($){ $("input").click(function(){     var e = $(this).attr("id");     }); }); とし、上のform文を直接書いた場合は押されたボタンが認識されるのですが、 form文をajax通信でinnerHTMLで出力されたボタンを押した時は ボタンを押してもイベントを認識してくれません。 これはinnerHTMLで出力しているからなんでしょうか。 何度やっても分からず質問させて頂きました。 以上、宜しくお願い致します。

  • エクセルVBAでテキスト保存

    エクセルのファイルをメモ帳で保存する場合に下記のコードが書いてあります。 strFILENAME = xlAPP.GetSaveAsFilename(InitialFileName:="データxxx_yyy_zzz.txt",FileFilter:=cnsFILTER, Title:=cnsTITLE) このうち、ファイル名の"データxxx_yyy_zzz.txt"、xxx, yyy,zzzをそれぞれ、特定のセルから取得したい場合、どのように直せばいいのでしょうか? xxx=A1セル yyy=A2セル zzz=A3セル といった感じです。 よろしくお願いします。

  • jqueryのコードについて

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

  • jQueryのcontainsフィルターについて

    こんにちは。 jQueryについてご質問があります。 jQueryのcontainsフィルターで要素を取得できなくて困っております。 たとえば以下のようなHTMLがあるとします。 ======================== <g class="parent"> <text width="50" height="50" x="10" y="10"><tspan>abc</tspan></text> </g> ======================== このときtspan要素を取得したい場合、 $("g.parent text tspan:contains('abc')"); のようにしても取得できないのです。 例えば次のパターンの場合 ========================= <section class="parent"> <p><span>abc</span></p> </section> ========================= $("section.parent p span:contains('abc')"); というコードを実行すると正確にspan要素を取得できます。 前者の場合はなぜ取得できないのでしょうか? ご教示よろしくお願いいたします。

  • jquery xmlのlinkが空の<a>タグ

    jquery ajaxでサイトのRSSを読み込み表示させるスクリプトです。RSS2.0形式のxml要素のlink内が空の場合、<a>タグを入れたくないのですが、下のスクリプトだと、IE8では、<a>タグが入りませんが、firefoxでは入ってしまいます。 ************** $(xml).find('item').each(function(i){ if ( i > 4 ) { return false; } var title = $(this).find('title').text(); var url = $(this).find('link').text(); var date = $(this).find('pubDate').text(); //日付を整形 date = dateChanger(date); if(url==""){ $('#feedList dl').append('<dt>' + date[0] +'<\/dt>'+ '<dd>'+ title+'<\/dd>'); } else { $('#feedList dl').append('<dt>' + date[0] +'<\/dt>'+ '<dd><a href="' + url + '">' + title + '<\/a><\/dd>'); } }); **************** どの部分が原因でしょうか。どうぞご教示ください。

  • jQuery hover時に遅延させる方法

    よろしくお願い致します。 jQueryを使用して以下のようなコードを書いております。 $('#hoge').hover( function(){ $(this).animate({'marginTop':'100px'},500,'easeOutQuart'); }, function(){ $(this).animate({'marginTop':'0px'},500,'easeOutQuart'); } ); 上記のコードで問題なく動作するのですが、要素(#hoge)からマウスを離したときにだけ遅延処理をさせたいと思い、以下のようなコードを書いてみたのですが動作しません。 $('#hoge').hover( function(){ $(this).animate({'marginTop':'100px'},500,'easeOutQuart'); }, function(){ setTimeout(function(){ $(this).animate({'marginTop':'0px'},500,'easeOutQuart'); },1000); } ); この場合、どのようなコードを記述すれば良いのでしょうか?

このQ&Aのポイント
  • マウスゼスチャーが使えず、Thinkpadの項目が表示されない
  • ドライバーの削除や再インストールがうまくいかない
  • 他のモデルでは起こらなかったトラブルが起きている
回答を見る