2015-04-03 107 views
-1

我想使用.append使用for循環顯示多個數據。 我需要通過.html函數第二次點擊某些其他數據來替換所有數據。.append裏面的.html不工作在jquery

這是我的代碼更多的解釋。

$(".content").html(function(){ 
    for(var l=1; l<4 ; l++) 
    $(".content").append("Event-"+l+"<br>"+player.activity[l].desc+"<br>"); 
} 

假設我有活性的json象下面這樣:

player : [{ 
"name": "Johny", 
"activity" : [ 
    {"id:1","desc" : "abc"}, 
    {"id:2","desc" : "abc"}, 
    {"id:3","desc" : "abc"} 
] 
},{ 
"name": "Mony", 
"activity" : [ 
    {"id:1","desc" : "abc"}, 
    {"id:2","desc" : "abc"}, 
    {"id:3","desc" : "abc"} 
] 
}] 

所以基本上我想取代我佐尼的活動MONY的。

我也嘗試交換內部.append裏面的.html這樣的方法工作正常,但.app內部.html不工作。它將Mony的數據附加到johny的數據。

有什麼建議嗎?

+0

爲什麼不在''''''''.html's函數外面留下'for'? – phts 2015-04-03 07:08:24

回答

2

功能 is not allowed.html方法。只有字符串。

您的for應該按照您的要求進行。不要.html的函數內部放置:

for(var l=1; l<4 ; l++) 
    $(".content").append("Event-"+l+"<br>"+player.activity[l].desc+"<br>"); 
} 

如果您要更換的內容,那麼只需for之前調用.html與空字符串:

$(".content").html(""); 
for(var l=1; l<4 ; l++) 
    $(".content").append("Event-"+l+"<br>"+player.activity[l].desc+"<br>"); 
} 

UPDATE

建立一個字符串並只更改一次DOM更好。這將減少DOM訪問。

var html = ""; 
for(var l=1; l<4 ; l++) 
    html += "Event-"+l+"<br>"+player.activity[l].desc+"<br>"; 
} 
$(".content").html(html); 

更新#2

功能允許的,但return應使用:

$(".content").html(function(){ 
    var html = ""; 
    for(var l=1; l<4 ; l++) 
    html += "Event-"+l+"<br>"+player.activity[l].desc+"<br>"; 
    } 
    return html; 
}); 
+0

對不起,允許。我更新了。應該使用'return' – phts 2015-04-03 07:19:12

+0

@phts thnx作爲答案。我使用了空的.html方法。 – 2015-04-03 07:24:17

1

此代碼是非常馬車。

1).html()應該有參數作爲字符串不是函數。

2)播放器是數組player.activity [l]將不起作用。

如果你想看到所有的說明:以下是該解決方案

for(var i=0; i<player.length ; i++){ 
    for(var j=0; j<player[i].length ; j++){ 

     $(".content").append("Event-"+j+"<br>"+player[i].activity[j].desc+"<br>"); 
    } 
    } 
+0

Thnx您的建議。但是我想用其他的替代一個信息塊,我之前在.html(「」)之前用循環 – 2015-04-03 07:27:21

1

documentation說:

在jQuery 1.4中,.html()方法允許HTML內容通過傳遞設置在函數中

所以,是的,你可以使用.html()裏面的函數。函數必須返回一個字符串,它將是元素的內容。

$(".content").html(function(){ 
    var content = ""; 
    for (var l = 1; l < 4 ; l++) { 
     content += "Event-" + l + "<br>" + player.activity[l].desc + "<br>"; 
    } 
    return content; 
}); 
+0

來實現,但是這並沒有傳遞函數。實際上僅傳遞一個字符串。在函數()中,你正在返回一個字符串。實際上用一個字符串調用.html()方法。 – Tuhin 2015-04-03 07:23:05

+0

不,我們不是調用函數,只是傳遞它。請注意'.html()'內部沒有函數調用操作符調用 – meskobalazs 2015-04-03 07:23:48

+0

但是您不能否認.html()具有參數字符串。我們可以用很多方式編寫代碼。但最後它必須是字符串 – Tuhin 2015-04-03 07:26:02