39

jQueryを使用します。私は次のhtmlを持っています:

<input type="checkbox" name='something' value='v1' /> All the world <br />

テキストだけを取得するにはどうすればよいですか。どのセレクターを使用する必要がありますか?(「全世界」が必要です)

HTMLにも触れられません...

4

4 に答える 4

69

DOM関数 .nextSiblingを使用して次のノード(テキストノードを含む)を選択し、を使用nodeValueしてテキストを取得してみてくださいAll the world

$(':checkbox')[0].nextSibling.nodeValue
于 2012-10-22T19:00:06.257 に答える
7

プレーンJavaScriptnextSiblingを使用するだけですが、そのメソッドを使用するには、jQueryを「ドロップアウト」する必要があります(したがって、[0]):

var text = $('input:checkbox[name="something"]')[0].nextSibling.nodeValue;

JSフィドルデモ

そして、私はついに、修正された他の提案の何が悪いのかを理解しました。

var text = $('input:checkbox[name="something"]').parent().contents().filter(
    function(){
        return this.nodeType === 3 && this.nodeValue.trim() !== '';
    }).first().text();

JSフィドルデモ

そして、あなたが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();

JSフィドルデモ

于 2012-10-22T18:59:02.273 に答える
3

マークアップにを追加した場合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();
于 2012-10-22T19:01:44.853 に答える