2011-10-19 7 views
2

与えられたdiv内のテキストを取得する方法と、入力の値をテキストとして取得する方法が不思議でした。私はjQueryを使って、このようなテキストを取得しようとした場合divのテキストを入力の値でも得る方法

<div id="example">This is a <input type="text" value="right"/> test.</div> 

$("#example").text(); 

結果はThis is a test.だろうと私はしたいと思います:This is a right test. は入力の数はunknowだろう。同様の要素の順序...

EDITなど: 私は最終的に自分自身の問題を解決:

var finalText=""; 
    $("#example").contents().filter(function() { 
     if(this.nodeType==3){ finalText =finalText+ this.nodeValue;} 
     else if(this.nodeName=="INPUT"){ finalText=finalText+this.value;} 
      return finalText 
    }) 

The living example

しかし@Jonathan Lonowski answerは私より明確かつ簡単です!

document.getElementbyId('example').innerHTML; 

element.innerHTML

+0

あなたは、いくつかの解析を行う必要があるでしょう。 $( '#example').html()を使用してください。次に、HTMLタグを解析しますが、各HTMLタグに対して値属性をチェックし、値属性(value属性)を取得します。それは唯一の方法です!誰かが優雅にあなたの答えにあなたのコードを書いてくれるでしょう... –

答えて

2

このURLを参照してくださいあなたはそれらの値を入力しreplaceWithできるようにするには、クローニングを試みる場合があります - :HTMLタグを取得するにはのinnerText

document.getElementbyId('example').innerText; 

を使用して

+0

私はこれが好きです...私には恥があります。私は正しく理解していないうちにそれを見ました... – Xasz

+0

Nice one ! 1つの小さな変更clone.find( '入力:テキスト') –

0

。そして、あなたがあったようにテキストをつかむ:ここ

var clone = $('#example').clone(); 

clone.find(':input').replaceWith(function() { 
    return $(this).val(); 
}); 

alert(clone.text()); 
+2

OPはHTMLではなくテキストを求めています – JaredPar

0

GET HTMLやストリップhtmlタグ

$('#example')[0].innerHTML.replace(/(<([^>]+)>)/ig, '').replace(/(\s+)/g, ' ') 
+0

OPは、削除されていない値で入力を置き換えたいです。 –

3

ことはあなたのためにこれを行います迅速なプラグインです:

$(document).ready(function() { 

    $.fn.extend({ 
     getContentText: function() { 
      var t = ''; 
      this.contents().each(function(i,c) { 
       var method = $(c).is("input") ? "val" : "text"; 
       t += $(c)[method](); 
      }); 
      return t; 
     } 
    }); 

    alert($("#example").getContentText()); 

}); 

はそれを試してみてくださいここでは: http://jsfiddle.net/wQpHM/

+0

とても包括的です:) – user973254

1

のすべての子をループすることができますとし、その値でthenを置き換えます。このような何か:

$.fn.allText = function(){ 
    var $this = this.clone(); 
    $this.children().each(function(){ 
     $(this, $this).replaceWith(this.value); 
    }); 
    return $this.text(); 
}; 

alert($('#example').allText()); 

デモ:http://jsfiddle.net/4mGmH/

+0

私はこのプラグインも好きです:) – Xasz

+0

@ Xasz:ありがとう:-) –

関連する問題