jQueryを使用します。私は次のhtmlを持っています:
<input type="checkbox" name='something' value='v1' /> All the world <br />
テキストだけを取得するにはどうすればよいですか。どのセレクターを使用する必要がありますか?(「全世界」が必要です)
HTMLにも触れられません...
jQueryを使用します。私は次のhtmlを持っています:
<input type="checkbox" name='something' value='v1' /> All the world <br />
テキストだけを取得するにはどうすればよいですか。どのセレクターを使用する必要がありますか?(「全世界」が必要です)
HTMLにも触れられません...
DOM関数 .nextSibling
を使用して次のノード(テキストノードを含む)を選択し、を使用nodeValue
してテキストを取得してみてくださいAll the world
$(':checkbox')[0].nextSibling.nodeValue
プレーンJavaScriptnextSibling
を使用するだけですが、そのメソッドを使用するには、jQueryを「ドロップアウト」する必要があります(したがって、[0]
):
var text = $('input:checkbox[name="something"]')[0].nextSibling.nodeValue;
そして、私はついに、修正された他の提案の何が悪いのかを理解しました。
var text = $('input:checkbox[name="something"]').parent().contents().filter(
function(){
return this.nodeType === 3 && this.nodeValue.trim() !== '';
}).first().text();
そして、あなたが前textNodes
からしか得ていないことを確認するために(率直に言って、これは過度に複雑になり、最初の提案ははるかに簡単に機能し、私は確実に疑っています):br
var text = $('input:checkbox[name="something"]').parent().contents().filter(
function(){
return this.nodeType === 3 && this.nodeValue.trim() !== '' && $(this).prevAll('br').length === 0;
}).text();
マークアップにを追加した場合label
(これが推奨されます)、次のようにすることができます。
HTML
<input type="checkbox" id="something" name="something" value="v1" /><label for="something">All the world</label> <br />
JS
var text = $( '#something ~ label:first' ).text();