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

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

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

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

jQuery

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

Q&A

解決済

3回答

248閲覧

【jQeury】テキストが入っている要素のみのCssを出力したい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/01/30 04:54

編集2018/01/30 04:54

前提・実現したいこと

使用言語:jQuery バージョン1.11.2

テキストが入っている要素のみを取得し、指定したCss(font-size等)を目に見える形(要素を追加して、それにテキストとして)で出力したい

最終的にはそれをブックマークレットとして使いたい
(jQueryは既にサイト上で読み込まれている前提 バージョン1.11.2)

発生している問題・エラーメッセージ

・テキストが入っていない要素(おそらくテキストが入っている要素の親要素)も取得してしまう
・text()で出力する時、改行がされない(console上では改行はされていた)

該当のソースコード

$(function(){ //テキストが入っている要素取得 var getEleInText = $(".content-section *").filter(function() { return $(this).text() !== ""; }); //取得した要素にクラス付ける(eachで回すため) getEleInText.addClass("add-class--ele-in-text"); //eachで回す $(".add-class--ele-in-text").each(function(i) { //要素を中に追加 $(this).prepend("<div class='add-class--relative'><div class='add-class--target'></div></div>"); //eachで回している要素のクラスを定義 var targetClass = "add-class--target--" + i; //そのクラスを追加 $(".add-class--target", this).addClass(targetClass); //css取得 var getColor = "color: " + $(this).css("color"); var getFs = "font-size: " + $(this).css("font-size"); var getFw = "font-weight: " + $(this).css("font-weight"); //出力するテキストを作成 var str = getColor + "<br>" + getFs + "<br>" + getFw; var str = str.replace(/(<br>|<br />)/gi, '\n'); //そのテキストを追加した要素に出力 $("." + targetClass).text(str); }); //style付与 $(".add-class--relative").css({ "position": "relative", "top" : "0" }) $(".add-class--target").css({ "position": "absolute", "top" : "0", "z-index" : "9999", "padding" : "8px 10px", "background" : "rgba(10, 10, 10, 0.8)", "color" : "#fff", "font-size" : "13px", "font-weight" : "400", "text-align" : "left" }) })

最終的にcssを出力する方法も今の要素を追加して出力するより良い方法もあると思いますが、現状これしか思いつきませんでした...
現状のエラー内容の良い解決策がありましたらご教授お願い致します。

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

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

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

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

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

kei344

2018/01/30 05:26

HTMLも提示されたほうが良いと思います。
guest

回答3

0

.filter(function() { return $(this).text() !== ""; })の時に、当然子要素や孫要素の持つ文字列も含まれるのでフィルタリングされていないのかと思いますので、以下でその要素が持つ文字列を見てあげます

Javascript

1var getEleInText = $(".content-section *").filter(function() { 2 return $.trim(this.childNodes[0].textContent) !== ""; 3});

コンソール上では\nで開業されますが、HTML上で改行させる場合は<br>を使用します。
.text(str)だとHTMLタグとして出力されないので、.html(str)にするといいかと思います。

投稿2018/01/30 05:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/01/30 10:04

詳しくお教えくださりありがとうございました。無事修正出来ました!
guest

0

ベストアンサー

CSSセレクタには「直下の子要素」だけを指定出来る>という記号があります。

JavaScript

1 var getEleInText = $(".content-section > *").filter(function() { return $(this).text() !== ""; });

また、これだとtext()で改行等が入っていた場合空白扱いにならないので、trimを使ったほうが良いかもしれません。

JavaScript

1 var getEleInText = $(".content-section > *").filter(function() { return $(this).text().trim() !== ""; });

また、<br>等を埋め込む場合、textではHTMLタグが無視されてしまうのでhtmlを使います。

JavaScript

1 //そのテキストを追加した要素に出力 2 $("." + targetClass).html(str);

投稿2018/01/30 05:18

masaya_ohashi

総合スコア9206

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

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

退会済みユーザー

退会済みユーザー

2018/01/30 10:04

上記回答を参考に修正することができました。ありがとうございました!
guest

0

テキストが入っている要素の親要素

対策であれば

javascript

1$(セレクタ).filter(function(){return $(this).text()!==""&&$(this).children().length==0;});

投稿2018/01/30 05:14

yambejp

総合スコア114843

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

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

退会済みユーザー

退会済みユーザー

2018/01/30 10:03

上記回答を参考に修正することができました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問