jquery如何使用..... addClass()。find()。text()

时间:2013-02-10 01:39:06

标签: javascript jquery

这是我想要的结果:

<div id="error" class="alert warning"><span  class="icon"></span>text here</div>

我试过了:

$('#error').addClass('alert error').find('span').addClass('icon').text('text here');`

结果如下:

<div id="error" class="alert warning"><span class="icon">text here</span></div>

我也试过这个:

$('#error').addClass('alert warning').text('text here').find('span').addClass('icon');

结果如下:

<div id="error-arch" class="alert warning">text here</div>

我做错了什么?

2 个答案:

答案 0 :(得分:0)

而不是在.text()上调用div来取代所有div的内容,而不是append

$('#error')
    .addClass('alert warning').append('text here')
    .find('span').addClass('icon');

这是小提琴:http://jsfiddle.net/v2ULf/


如果您已经有文字,并且只想替换它,则必须先找到文本节点:

$('#error').contents().filter(function() {
    return this.nodeType == 3;
}).last()[0].nodeValue = 'New Text';

这是小提琴:http://jsfiddle.net/v2ULf/1/

答案 1 :(得分:0)

我建议:

$('#error')
    .addClass('error warning')
    .find('span')
    .addClass('icon')
    .after(
        function () {
            return document.createTextNode('text here');
        });

JS Fiddle demo

虽然我似乎在addClass()中添加了错误的类名,但理论完全相同,不过,但显然将类名修改为你想要添加的类名。而且,在链接小提琴中,我不得不根据你在jQuery方法中添加/执行的内容来猜测起始HTML。