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

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

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

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

Q&A

解決済

4回答

4940閲覧

範囲を指定して文字を削除したい

a1291

総合スコア15

jQuery

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

0グッド

0クリップ

投稿2017/06/22 09:17

<br>から<span>の前までを削除して、名前だけにしたいです。

<li> <p class="name"> 名前<br>苗字 <span>出身</span> </p> </li>

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

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

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

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

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

x_x

2017/06/22 09:27

<br>から<span>の前までを削除したら「名前<span>出身</span>」だと思うのですが、いいのでしょうか?
a1291

2017/06/22 09:31

はい。そちらでお願いします。お手数おかけします。
guest

回答4

0

ベストアンサー

###CSSだけで無理やり消す(隠す)方法

spanに白背景をつけて、苗字の上に被せる。

CSS

1p.name { 2 position:relative; 3} 4p.name span { 5 position:absolute; 6 left:0; 7 bottom:0; 8 padding-right:3em; 9 background-color:#fff; 10}

あら簡単(。´ސު​`。)

##冗談はさておきjQueryでやる場合

JavaScript

1$(function() { 2 var parentVal = $('.name').html().split('<br>')[0]; // A.<br>より前の文字列を取得 3 var spanVal = $('.name span').text(); // B.<span>の中身を取得 4 $('.name').html(parentVal+'<br>'+spanVal); // <p>の中身をA+Bに差替え 5});

1行で書いてもOK

JavaScript

1$(function() { 2 $('.name').html($('.name').html().split('<br>')[0]+'<br>'+$('.name span').text()); 3});

投稿2017/06/22 09:58

編集2017/06/22 10:28
iss

総合スコア506

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

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

a1291

2017/08/01 02:41

対応遅くなり申し訳ありませんでした。こちらで無事対応できました!ありがとうございます!
x_x

2017/08/03 02:16

この回答では<br>が残り、要件を満たさないと思いますが?
guest

0

最初の(テキスト)ノードだけ抜き出すという考え方もあります

  • 案1

javascript

1$(function(){ 2 $('.name').html(function(){return $(this).contents().first().text()}); 3});
  • 案2

javascript

1$(function(){ 2 $('.name').each(function(){ 3 $(this).html($(this).get(0).firstChild); 4 }); 5}); 6

HTML

1<ul> 2<li> 3<p class="name"> 4名前1<br>苗字1 5<span>出身</span> 6</p> 7</li> 8<li> 9<p class="name"> 10名前2<br>苗字2 11<span>出身</span> 12</p> 13</li> 14<li> 15<p class="name"> 16名前3<br>苗字3 17<span>出身</span> 18</p> 19</li> 20</ul>

修正

完全に勘違い最初の<br>と2番目の文字列を削除するんですね
これでどうでしょう?

javascript

1 $('.name').each(function(){ 2 $(this).contents().eq(2).remove().end().filter('br').eq(0).remove(); 3 }); 4

投稿2017/06/22 12:03

編集2017/06/23 05:00
yambejp

総合スコア114814

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

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

yambejp

2017/06/22 12:16

contents()から要素を抜き出すという考え方もできるので案を2つあげておきました
yambejp

2017/06/23 05:00

すみません、仕様を間違えていたので修正しました
guest

0

javascript

1<script> 2$(function() { 3 $('.name').contents().filter(function() { 4 // 3: TextNode 5 return this.nodeType !== 3 && this.nodeName.toUpperCase() !== 'BR'; 6 }).remove(); 7})(); 8</script>

で行けると思います。

投稿2017/06/22 09:25

編集2017/06/22 13:16
mattn

総合スコア5030

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

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

mattn

2017/06/22 13:02

あー。質問の理解が間違ってました。。。あとで直します。
mattn

2017/06/22 13:17

場合によっては SPAN を見つける、とした方がいいかも。
guest

0

JavaScript

1$('.name').each(function(index, element) { 2 element.innerHTML = element.innerHTML.replace(/<br[\s\S]+<span/, '<span'); 3});

びっくりするほどほかの方と回答が違うけれども、「名前<span>出身</span>」になるのであればこんな感じになるはず。

投稿2017/06/23 04:18

x_x

総合スコア13749

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問