1

最初のテキスト ノードを取得しようとしています。

var s = $.trim('login<tbody> <tr> <td class="translated">Lorem ipsum dummy text</td></tr><tr><td class="translated">This is a new paragraph</td></tr><tr><td class="translated"><b>Email</b></td></tr><tr><td><i>This is yet another text</i></td> </tr></tbody>');

if($(s).find('*').andSelf().not('b,i').length > 1){
    alert($(s).find('*:not(:empty)').first().text());
}

ここに私がjsfiddleでやっていることへのリンクがあります

「login」である最初のテキストノードを提供するのではなく、 2番目のテキストノードである「lorem ipsum ...」を提供します。

ノート:

HTML 文字列は動的であるため、クラスや ID を割り当てたり、HTML 要素や部分文字列などで囲んだりすることは考えないでください。

4

1 に答える 1

2

HTMLがすでに文字列である場合はsubstring()、最初の山かっこに至るまでのすべての文字を取得するために使用します。

var s = $.trim('login<tbody> <tr> <td class="translated">Lorem ipsum dummy text</td></tr><tr><td class="translated">This is a new paragraph</td></tr><tr><td class="translated"><b>Email</b></td></tr><tr><td><i>This is yet another text</i></td> </tr></tbody>');

s.substring(0, s.indexOf('<'));
// "login"

アップデート

undefinedこれは、最初にない場合、またはテキストノードがない場合に、最初のテキストノードを検索します。

$(s).contents().filter(function() { return this.nodeType == 3 })[0]

アップデート2

これも機能する可能性がありますが、それを実行した場合の影響については詳しく調べていません。

$(s).find('*').contents().filter(function() { return this.nodeType == 3})[0]
于 2013-01-23T06:54:03.490 に答える