如果类存在jQuery,则调整文本

时间:2016-07-29 14:45:11

标签: javascript jquery

如果类存在,我试图将文本附加到p元素。我会确定下面的内容会起作用,但出于某种原因,$(this)的读取方式与我的预期不同。也许这是由于jQuery的设置方式。

我希望p文字为Test This is gone

当我在控制台中查看$(this)时,它显示了该功能所在的对象。

我的 html 看起来像这样

<div class="place-holder">
    <p class="place gone">Test</p>
</div>  

JQUERY

var app = app || {};
!function(){
    app.test = {
        init: function ( ) {
            if($('.place').hasClass( "gone" ) ){
               console.log($(this));
               $(this).append('This is gone');
            }
         }
    }

 $(document).ready(app.test.init);
}(jQuery);

有人有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你应该能够做到:

$('.place.gone').append('This is gone');

此外,如果输入可能是恶意的(包含HTML),则应使用document.createTextNode()附加:

$('.place.gone').append(document.createTextNode('This is gone'));

$(this)通常是指你正在使用的元素,但在这种情况下,你试图从init函数中获取this(因为我们不知道打电话,我不确定它可能是什么。)

我想你可能正在考虑这样的事情:

$('.place').forEach(function() {
    //In this case, forEach assigns the element to the 'this' variable.
    if ( $(this).hasClass( "gone" ) ) {
        console.log($(this));
        $(this).append('This is gone');
    }
}

答案 1 :(得分:0)

除非你附加的文字应该包含HTML,否则你应该使用

$('.place.gone').append(document.createTextNode('Hello World'));