2010-11-24 2 views
2

Ich versuche, ein Datenattribut zu einem HTML-Element hinzuzufügen. Das Datenattribut (Datenbeschreibung) kann Sonderzeichen wie apostrope enthalten.Hinzufügen eines Datenattributs (mit Sonderzeichen) zu einem dom-Element mit jquery

InsertHtml = InsertHtml + '<tr id="DashboardRow0" data-description=\'' + JSON.stringify(data[0])+ '\'><td>' + </td></tr>'; 
htmlElement.append(InsertHtml); 

Der Code auf diese Daten zuzugreifen ist unten angegeben ...

var $row = $("#DashboardRow0"); 
var jsonData = eval('(' + $row.attr('data-description') + ')'); 

Aber das Problem ist ... Wenn es innerhalb JSON.stringify(data[0]) data..the Browser es mit einem ein Apostroph ist ersetzt " beendet effektiv die Zeichenfolge.

Gibt es eine bekannte Lösung zum Hinzufügen von Datenattributen mit Sonderzeichen zu Knoten?

+2

Das eval schmerzt meine Augen. –

+0

versuchen, Eval zu vermeiden, wenn möglich, haben Sie versucht, jquery.metada Plugin, wenn es irgendwelche Optionen hat. – kobe

Antwort

6

try Daten vor stringify

data[0].myProblemField = escape(data[0].myProblemField) 
JSON.stringify(data[0]) 

<bearbeiten>
oder besser

for(var prop in data[0]) if(typeof(data[0][prop]) == "string") 
    data[0][prop] = escape(data[0][prop]); 

< bearbeiten/>

und danach

zu entkommen
var jsonData = eval('(' + $row.attr('data-description') + ')'); 
jsonData.myProblemField = unescape(data[0].myProblemField) 
+0

Das löste das Problem..THanks – Mulki

+0

Großartig das zu hören :) .. markieren Sie es dann – rbhro

+0

Große Lösung, Danke –

2

Nicht ganz sicher, ob dies Ihnen hilft (d. H., Ob dies alles im selben Dokument geschieht), aber haben Sie erwogen, .data() von jQuery zu verwenden? Es wird diese Probleme nicht haben, da die Daten als Variable gespeichert werden.

1

Wenn Sie in HTML schreiben

<tr id="some &quot; "><td>...</td></tr> 

Sie erhalten

<tr id="some " "><td>...</td></tr> 

in Browser.

Verwandte Themen