如果文本存在,用jQuery替换Text

时间:2011-05-16 21:04:25

标签: jquery if-statement

我在jQuery中尝试做的是从第一个注释开始,直到用户点击一个按钮,然后输出第一个注释,使其可见。我有这个工作,到了一定程度。我希望它在页面加载时发生,所以我在document.ready中有它,但它不起作用。所以我将它附加到mousemove事件,它可以工作。

但我现在要做的是,如果有评论,请发表评论并像以前一样展示。但如果没有评论,则显示“无评论”字样。以下是我正在使用的代码。

if ( jQuery('.dsq-commenter-name').length ){
          jQuery(document).mousemove(function() {
            jQuery('#comments p strong').text( jQuery('.dsq-commenter-name').text() );
            jQuery('#comments p span.comment_excerpt').text( jQuery('.dsq-comment-text').text() );
        });
      }

此代码无效。如果我删除if语句,它可以替换文本,但如果没有任何注释,它只是放空格而不是留下“无评论”。如果我将代码直接放入控制台,它就可以工作。所以我不确定为什么它在页面加载时不起作用。我假设它必须是if语句的东西,但我已经尝试了各种各样的东西而无法让它工作。

编辑: 这段代码中没有显示,但我在jQuery(文档)中有所有内容.ready(function(){ 这似乎没有帮助。但这些评论是由Disqus处理的,所以我认为它们会在以后加载,那么我该如何将事件附加到它们呢?

第二次编辑: 好吧我已经修好了,不知道这是不是最好的办法。感谢@Jacob,我决定在代码已经执行后加载注释。所以我使用setTimeout添加了代码,因此该函数将在页面加载后运行一秒左右,这是有效的。再次,不确定这是不是这样做的方式,所以如果我错了或者你想看代码,请纠正我。

2 个答案:

答案 0 :(得分:0)

我不确定“长度”是检查的最佳变量。试试val:

if (jquery('.dsq-commenter-name').val() != "") {  //or try != null
    //do stuff.
}

答案 1 :(得分:0)

jQuery('.dsq-commenter-name')将返回定位所需元素的jQuery选择器。除非元素不存在,否则.length将始终为true,无论内容如何。如果你关心文本,你想在输出上做一个.text()。如果查询没有找到任何元素,它将返回null。

可能

if (jQuery('.dsq-commenter-name').text()) { // checks for "", null, undefined