2010-06-08 7 views
4

J'essayais de construire un tag <a> et de le définir dans un <td> d'une table. La chaîne est construite parfaitement mais quand je la mets en utilisant innerHTML en utilisant jQuery, la chaîne est cassée. Je ne peux pas comprendre pourquoi cela se passe? Des indices?jQuery innerHTML ne fonctionne pas correctement (!)

est ici la chaîne que je veux mettre dans le <td>:

<a onclick='return EditIssueItemBatch('1c1e27a2-beac-4772-a26f-6a7e05529a65', '498ba483-ca06-4b23-b3a9-0085e4760ff1')'>Edit</a> 

Mais voici à quoi il ressemble après avoir défini comme innerHTML:

<A onclick="return EditIssueItemBatch(" ?498ba483-ca06-4b23-b3a9-0085e4760ff1?)? 1c1e27a2-beac-4772-a26f-6a7e05529a65?,>Edit</A> 

Et voici mon bout de code ..

var tr = $("#itemIssueBatchListTable > tbody:last").children()[data.Index + 1]; 
... 
... 
var strBuff = []; 
strBuff.push("<a onclick='return EditIssueItemBatch('"); 
strBuff.push(data.ItemIssueBatch.ItemCode_FK); 
strBuff.push("', '"); 
strBuff.push(data.ItemIssueBatch.StockDetCode_FK); 
strBuff.push("')'>Edit</a>"); 
tr.cells[9].innerHTML = strBuff.join(""); 
... 
... 
+2

Notez que vous n'utilisez pas jquery lors de l'attribution d'une valeur à innerHTML - c'est tout simplement javascript, donc cela n'a rien à voir avec Jquery. La voie Jquery serait: $ (tr.cells [9]) .html (strBuff.join ("")); – Razor

+0

Merci Razor pour la réponse. Echapper à la chaîne l'a fait comme suggéré par David. $ (Tr.cells [9]) .html (strBuff.join ("")) fonctionne aussi si j'échappe correctement la chaîne. – Kayes

Répondre

7

Vous terminez votre attribut onclick à la fin de la première strBuff.push appel en utilisant des guillemets simples à la fois entourent la valeur d'attribut et à l'intérieur de son contenu - vous devez mélanger vos citations:

var strBuff = []; 
strBuff.push("<a onclick=\"return EditIssueItemBatch('"); 
strBuff.push(data.ItemIssueBatch.ItemCode_FK); 
strBuff.push("', '"); 
strBuff.push(data.ItemIssueBatch.StockDetCode_FK); 
strBuff.push("')\">Edit</a>"); 
tr.cells[9].innerHTML = strBuff.join(""); 

En fait, le « souhaité » HTML que vous avez écrit dans votre question ne fonctionnerait pas non plus pour la même raison.

0

essayez plutôt tr.cells[9].html(strBuff.join("")).

Questions connexes