7

私はこの質問に対する答えを探していました、そして私はこれを思いつきました

stackoverflow - jQuery でテキスト ノードを選択するにはどうすればよいですか?

これを行う別の方法はこれまでのところありますか?? 私の場合、特定のDOM要素から始まるすべてのテキストノードを見つけようとしています。

empty()

それ。助言がありますか ?

更新 - 少しいじった後、私はこの jsFiddleを思いつきました

関数は各テキスト ノードを選択しますが、空のノードだけを指定された新しい値に置き換えるのではなく、それらすべてを置き換えます。私は何を間違っていますか??

4

5 に答える 5

2

これを参照して、関数は各テキストノードを選択しますが、空のものだけを指定された新しい値に置き換えるのではなく、それらすべてを置き換えます. 私は何を間違っていますか??'

必要なのは、正規表現を使用して空白の nodeValue をテストし、これに基づいて先に進むことです。

このように更新しましたが、正常に動作しますhttp://jsfiddle.net/Vj5LR/2/

$(document).ready(function(){

   var prova = ['1','2','3','4','5','6'];
   var regForNonWhiteSpace = /\S/; // non white space
   $('.example').find('*').each(function(){
       $(this).contents().filter(function(){
           //this.trim();
           if( this.nodeType === 3 && !regForNonWhiteSpace.test(this.nodeValue)){
               this.nodeValue = 'new value'; // only when there is no content at all
           }
       });
    });
});

これで問題が解決することを願っています

于 2013-12-05T06:45:45.243 に答える
1
$(document).ready(function(){

    var prova = ['1','2','3','4','5','6'];

    $('.example').find('*').each(function(){
        $(this).contents().filter(function(){
            //this.trim();
            if( this.nodeType === 3 && this.nodeValue.trim().length === 0){
                this.nodeValue = 'new value';
            }
        });
    });
});

http://jsfiddle.net/trevordowdle/RajB4/40/

于 2013-12-03T18:53:18.143 に答える
1

empty()要素を空にするために使用されinnerText、textNodes には適用されません。代わりに、次を使用する必要がありますremove()

$('.example')
    .contents()
    .filter(function () {
    return this.nodeType === 3; //Node.TEXT_NODE
}).remove();

フィドルの例

于 2013-09-09T08:53:52.490 に答える
1

このデモはどうですかhttp://jsfiddle.net/RajB4/42/

if( this.nodeType === 3 && this.nodeValue.trim().length != 0){
                this.nodeValue = 'new value';
            }
于 2013-12-06T06:24:21.883 に答える
0

私が理解しているように、これがあなたが探しているものだと思います:

$('.example').each(function(){
    console.log($(this).contents());
    $(this).contents().filter(function(){
        if( this.nodeType === 1 && this.childElementCount == 0 && this.textContent == ''){
            this.textContent = 'new value';
        }
    });
});

フィドルを確認できます

于 2013-12-10T10:44:24.930 に答える