使用Jquery根据其内容隐藏<p> </p>

时间:2009-10-05 09:25:21

标签: jquery

我试图实现以下目标:

某个页面将包含一系列字符串,如果存在,则将其替换为数据库内容 例如:

<h2 class="label">Title:</h2>
<p class="value">{{Title}}</p>

会变成:

<h2 class="label">Title:</h2>
<p class="value">This is the title</p>

问题是,如果从未输入{{Title}}的数据库行,则显示{{Title}}而不是用空格替换它。所以id喜欢做的是,使用jquery,如果.value包含{{,隐藏整个元素,以同样的方式显示:none会。

这可能吗?

提前致谢。
罗布

4 个答案:

答案 0 :(得分:6)

$(function () // when DOM is ready for manipulation, do:
{
    // for each of the p-elements in the DOM (add your own context or class-scope
    // or whatever you can do to narrow down the list of elements here):
    $("p").each(function () 
    {
        // cache the element (always a good idea when doing multiple operations
        // on the same entity):
        var that = $(this);

        // if the text of the element is "{{Title}}" then hide the element:
        if (that.text() == "{{Title}}") that.hide();

        // alternatively you can do:

        // if the the characters "{{" exists at any position in the text of the
        // element, hide it:
        if (that.text().indexOf("{{") > -1) that.hide();
    });
});

答案 1 :(得分:5)

$("p.value:contains('{{')").hide();

编辑:
声称此代码较慢。应该说这是相当基本的,实际上运行速度快3倍 检查此示例(第一个较慢):http://jsbin.com/ikite

答案 2 :(得分:3)

尝试:

$('p.value').each(function(i,e){
  if ($(e).text().match(/^{{.*}}$/)) {
    $(e).hide();
  }
});

答案 3 :(得分:0)

你能不能给p一个标题?

<h2 class="title label">Title:</h2>
<p class="title value"></p>

然后隐藏/显示它:

if(title != '')
{
    $('p.title.value').text(title);
}
else
{
    $('.title').hide();
}