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

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

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

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

jQuery

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

Q&A

解決済

3回答

220閲覧

JQueryの記法について、お教えください。

yugoroy

総合スコア12

JavaScript

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

jQuery

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

0グッド

2クリップ

投稿2019/05/27 09:05

下記のhtmlの、<li><p><a></a></p></li>をJQueryで取得したい場合、
どのように記述すれば良いでしょうか?

<ul class="targetArea"> <li> <p> <a href="#test1">リンクテキスト</a> </p> </li> </ul>

----現状の記述----

if (searchText != '') { $('.targetArea p').each(function() { targetText = $(this).next().text(); targetText2 = $(this).html(); if (targetText.indexOf(searchText) != -1) { searchResult.push(targetText2); } });

現状だと、htmlテキストが取得されてしまいます。 aタグなどは属性のまま取得したいです。
4行目の html の部分を変える必要があると思うのですが正しい記述がわからず。。

お知恵をお貸しいただけないでしょうか。

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

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

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

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

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

m.ts10806

2019/05/27 09:09

取得するのは良いのですが、どのような情報をどのように扱いたいのでしょうか。 「<li><p><a></a></p></li>をJQueryで取得したい」だとHTMLを取得したいことになるので $(this).html()だけで良いのですけど。
x_x

2019/05/27 09:13

$('.targetArea p') の時点で p になっているのですが li から取りたいのですか?
yugoroy

2019/05/27 09:22

ご回答ありがとうございます。 説明不足で申し訳ありません。 取得したいのは、<li><p><a></a></p></li>ではなく、 <p><a></a></p>でした。 <p><a href="#test1">リンクテキスト</a></p> のような形で取得したいです。 htmlを取得、ではなく、属性やタグ情報の伴ったテキストデータとして取得したい、という内容です。
m.ts10806

2019/05/27 09:24

><p><a href="#test1">リンクテキスト</a></p> HTML=テキストデータになると思いますけど・・ html()は指定した要素の内部の情報をテキストデータとして取得するもので、 <p><a href="#test1">リンクテキスト</a></p>となっていればそれはそれで正しいHTMLのテキストデータ ですよ。
yugoroy

2019/05/27 09:30

mts10806 様 ありがとうございます。 確かにテキストデータの取得は出来ているのですが、、 &lt;a href="#optimStore"&gt;&lt;span のような文字データでして、タグやclassが適用されない文字として出力されており、 そうではなく、cssやタグが適用化された状態で出力したい、と考えております。 説明下手で申し訳ありません。。
m.ts10806

2019/05/27 09:32

text()だとそうなります。(HTMLエスケープが入ります) html()だとそのまま取得するのでそうなりません。
yugoroy

2019/05/27 09:56

mts10806 様 正規表現で出力されてしまっているようです。 &lt;a href="#test"&gt;&lt;span class="leftArrow" クロームのツールで上の箇所を <a href="#test><span class="leftArrow" と書き直すと、一時的に直りました。 searchResult.push(targetText2); と、.pushで出力しているのがまずいのでしょうか?
m.ts10806

2019/05/27 09:59

いえ正規表現ではなく「htmlエスケープ」です。
yugoroy

2019/05/27 10:13

mts10806様 ありがとうございます。 ご助言がヒントとなりました。 出力の記述の方に問題がありました。 // 検索結果をページに出力 for (var i = 0; i < searchResult.length; i ++) { $('<p>').text(searchResult[i]).appendTo('#searchResult_list'); } ↓ // 検索結果をページに出力 for (var i = 0; i < searchResult.length; i ++) { $('<p>')html(searchResult[i]).appendTo('#searchResult_list'); } と、こちらをtextからhtmlにすることで解決いたしました!
m.ts10806

2019/05/27 10:26

もし既についた回答以外の手法なのであればご自身で回答書かれて自己解決とされると良いです。 ※ただ既についた回答も大事なことが書かれているので理解した上で解決済みとしてください
kei344

2019/05/27 17:10

まだ質問が「受付中」になっていますが、どのように解決したのかを回答文に書き、「解決済」にされてはいかがでしょうか。
yugoroy

2019/05/28 04:38

kei344 様 解決済みとさせていただきました。
guest

回答3

0

$('ul.targetArea li')で取得はできます。

…そのあと何をしたいかのほうが重要ではありませんか?

投稿2019/05/27 09:10

maisumakun

総合スコア145192

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

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

0

自己解決

解決いたしました。
原因としては、データの取得は"html"で取得していましたが、
それを出力している箇所の記述が、"html"ではなく"text"だったため、
読み込んだものをhtmlエスケープで出力していたためでした。

// 検索結果をページに出力
for (var i = 0; i < searchResult.length; i ++) {
$('<p>').text(searchResult[i]).appendTo('#searchResult_list');
}

// 検索結果をページに出力
for (var i = 0; i < searchResult.length; i ++) {
$('<p>')html(searchResult[i]).appendTo('#searchResult_list');
}

とすることで解決いたしました。
皆様ありがとうございました。

投稿2019/05/28 04:37

yugoroy

総合スコア12

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

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

m.ts10806

2019/05/28 04:40

回答でもマークダウン使えますよ
guest

0

どの状態で取得したいのでしょうか?

javascript

1<script> 2$(function(){ 3 console.log($('.targetArea>li>p>*').get()) 4}); 5</script> 6<ul class="targetArea"> 7 <li> 8 <p> 9 <a href="#test1">リンクテキスト</a> 10 </p> 11 </li> 12</ul>

投稿2019/05/27 09:10

yambejp

総合スコア114883

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問