在JavaScript中的字符串输出中应用条件语句

时间:2009-12-05 06:01:25

标签: javascript jquery

我正在使用一个名为“jParse”的jQuery插件来解析XML文件,如下所示:

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

如您所见,“jpet”变量与elementTag数组相关联。

我如何检查jpet var是否包含数据(因为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 个答案:

答案 0 :(得分:2)

如果我理解正确的文档,这应该有用:

$('#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 :(得分:1)

您可以使用三元运算符:

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

但是将HTML字符串放在变量中然后使用常规if语句预先添加其他HTML会有什么问题?

答案 2 :(得分:0)

似乎jParse不支持这种模板(从usage页面判断;可能是错误的)。然后,一种可能的解决方案是对结果进行后处理,如下所示:

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

当然,您必须确保没有其他地方出现空H2元素。