2013-06-19 61 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