Примените условные операторы в строковом выводе в JavaScript - PullRequest
0 голосов
/ 05 декабря 2009

Я использую плагин jQuery с именем " jParse " для анализа XML-файла, например, так:

$('#content').jParse({
 ajaxOpts: {url: 'data.xml'},
 elementTag: ['title', 'description'],
 output: '<h2>jpet0</h2><p>jpet1</p>'
});

Как видите, переменные "jpet" коррелируют с массивом elementTag.

Как проверить, содержит ли переменная jpet данные (так как некоторые из тегов в XML пусты), и скрыть теги HTML, если это не так?

Это не работает:

$('#content').jParse({
 ajaxOpts: {url: 'data.xml'},
 elementTag: ['title', 'description', 'extra'],
 output: if (jpet0) { '<h2>jpet0</h2>' } + '<p>jpet1</p><p>jpet2</p>'
});

Но это дает хорошее представление о том, чего я пытаюсь достичь.

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 05 декабря 2009

Это должно работать, если я правильно понял документы:

$('#content').jParse({
   ajaxOpts: {url: 'data.xml'},
   elementTag: [
     {elem:'title', format: function(title){
        if(title != '') return '<h2>' + title + '</h2>';
        else return '';
     }}, 'description'],
   output: 'jpet0<p>jpet1</p>'
});
1 голос
/ 05 декабря 2009

Вы можете использовать троичный оператор:

 output: (jpet0 ? '<h2>jpet0</h2>' : '') + '<p>jpet1</p><p>jpet2</p>'

Но что плохого в том, чтобы просто поместить строку HTML в переменную и затем добавить дополнительный HTML, используя обычный оператор if?

0 голосов
/ 05 декабря 2009

Кажется, что jParse не поддерживает этот тип шаблона (судя по странице использование ; может быть ошибочным). Тогда одним из возможных решений будет последующая обработка результата, например:

$('#content').remove('h2:empty');
// i.e. removes all empty H2 elements from #content.

Конечно, вы должны убедиться, что в других местах нет пустых элементов H2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...