2013-06-19 22 views
2

我已经被困在jquery函数中,我要的只是使用jquery的追加函数追加一些div,但问题是我想在这个函数中放一些if条件,如何把条件放在jquery的追加函数中

这里是我工作的代码无条件

$("#some-div-container").append( 
            "<div>name 1" + 
             "<a href=\"#\">" + 
              "<div id=\"add\">Add</div>" + 
             "</a>" + 
             "<div>Available</div>" + 
            "</div>" 
           ); 

我使用有一些JSON响应jQuery的AJAX功能,所以我想这一点,让我们说,如果(响应== 1),然后执行它里面的代码,我正在尝试使用条件,

$("#some-div-container").append( 
            "<div>name 1" 
            if(response == 1) {  
            +"<a href=\"#\">" + 
              "<div id=\"add\">Add</div>" + 
             "</a>" 
            } 
             + "<div>Available</div>" + 
            "</div>" 
           ); 

有可能吗? 任何帮助将不胜感激,一个错误,当我把这个情况出现“我的其他一些JavaScript函数没有定义”,可以完美运行无条件

回答

3

建立你的字符串事前,通过使用一个变量:

var elements = "<div>"; 
if (someCondition) { 
    elements += "<a href='#'>some link</a>"; 
} 
elements += "</div>"; 

或者,更具体的例子:

$("#some-div-container").append(elements); 
+0

一个不错的方法总是有用的=) –

1

试试这个:

$("#some-div-container").append( 
    "<div>name 1" 
    + (
     response == 1 ?  
     "<a href=\"#\">" + 
     "<div id=\"add\">Add</div>" + 
     "</a>" 
     : 
     "" 
    ) 
    + "<div>Available</div>" + 
     "</div>" 
); 
+0

如果条件是假的,你还是会追加div开放标签,可以搅乱你的代码。 –

+0

是的,我搞砸了,我编辑了代码,谢谢。 – Brewal

0

创建基于不同的字符串值为response,并使用条件字符串进行单个append()调用。

+0

我认为这个解决方案,但这将是一个漫长的,我必须把多个条件 –

+0

它仍然可能比试图在单个字符串中有一堆if语句更清洁。 – Derek

0
var html; 
html += "<div>name 1"; 
if(response == 1) {  
    html += "<a href=\"#\">"; 
// other code..... 
}         

$("#some-div-container").append(html); 
1

var elements = "<div>name 1"; 
if(response == 1) {  
    elements += 
    "<a href='#'>" + 
     "<div id='add'>Add</div>" + 
    "</a>"; 
} 
elements += "<div>Available</div>"; 
elements += "</div>"; 

然后将生成的字符串追加

你可以在桌面上实现由于方式:

$('#some-div-container').append(
    '<div>name 1' + 
    (response == 1 ? '<a href="#"><div id="add">Add</div></a>' : '') + 
    '<div>Available</div></div>' 
); 

Demo

但我认为这将是整洁做这样的事情

var div = $('<div/>', { text: 'name 1' }); 
if(response == 1) { 
    div.append($('<a/>', { href: '#' }).append($('<div/>', { id: 'add', text: 'Add' }))); 
} 
$('<div/>', { text: 'Available' }).appendTo(div); 
div.appendTo('#some-div-container'); 

Demo