0

子 div の内容を変更せずに、子 div から親 div のテキストを変更しようとしています。

私は持っている

<div id='testDiv'>
    this is the test parent div
    <div id='child1'>
         lots of contents and child div
         ...................
    </div>
    more div/child div and contents...

</div>

私のjqueryで

$('child1 div a').click(function(){
    $('#testDiv').text('new text');  //this will remove the child1 div and all the contents inside testDiv
    //I want to replace 'this is the test parent div' text to 'newt text' 
})

とにかくこれを成し遂げることはありますか?どうもありがとう!

4

4 に答える 4

2

.filter()とを組み合わせて使用​​してみてください.contents()

$('#child1 div a').click(function() {
    $('#testDiv').contents().filter(function() {
        if (this.nodeType != 1 && this.data.trim() != '') {
            return this.data = 'New Text';
        }
        else {
            return this
        };
    });
})​

フィドルをチェック

于 2012-11-27T23:07:33.237 に答える
2

プロパティを使用できfirstChildます:

​document.getElementById('testDiv').firstChild.nodeValue = 'new text'​​;

http://jsfiddle.net/vstHS/

于 2012-11-27T23:09:09.687 に答える
1

テキストをスパンでラップすると、変更が容易になります。

$('#testDiv').contents()
             .filter(function(){return this.nodeType === 3})
             .wrap($('<span />',{'class':'test'}));

$('.test').text('new text');

フィドル

スパン要素が何らかの問題を引き起こした場合、テキストノードが変更されたら、ラップを解除できますか? </p>

于 2012-11-27T22:59:48.833 に答える
-2

別のdivに変更したい部分を含めて、それを直接ターゲットにする必要があります...

<div id='testDiv'>
    <div id='changeMe'>
        this is the test parent div
    </div>
    <div id='child1'>
         lots of contents and child div
         ...................
    </div>
    more div/child div and contents...
</div>

jquery:

$('child1 div a').click(function(){
    $('#changeMe').text('new text');
})
于 2012-11-27T22:57:18.250 に答える