Использование Jquery для сокрытия <p>на основе его содержимого - PullRequest
4 голосов
/ 05 октября 2009

Я пытаюсь добиться следующего:

На определенной странице будет ряд строк, которые заменяются содержимым базы данных, если оно существует.
Например:

<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 содержит {{, скрыть весь элемент, так же как и на экране: ни один не будет.

Возможно ли это?

Заранее спасибо.
Rob

Ответы [ 4 ]

6 голосов
/ 05 октября 2009
$(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();
    });
});
5 голосов
/ 05 октября 2009
$("p.value:contains('{{')").hide();

Edit:
Есть утверждение, что этот код медленнее. Надо сказать, что это довольно простой и на самом деле работает примерно в 3 раза быстрее .
Проверьте этот пример (первый медленнее): http://jsbin.com/ikite

3 голосов
/ 05 октября 2009

Попробуйте:

$('p.value').each(function(i,e){
  if ($(e).text().match(/^{{.*}}$/)) {
    $(e).hide();
  }
});
0 голосов
/ 05 октября 2009

Не могли бы вы просто дать p класс заголовка?

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

А потом спрятать / показать это:

if(title != '')
{
    $('p.title.value').text(title);
}
else
{
    $('.title').hide();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...