2013-04-02 18 views
9

ho intenzione prefazione questo con: "So che questa è una cattiva pratica e di un brutto hack (e mi dispiace), ma ..."Terzo livello di citazione fuga in HTML e JavaScript

I' m usando il widget tooltip di jQuery TOOL per visualizzare un suggerimento su un elemento html quando l'utente vi passa sopra. Con questo widget si aggiunge l'html del tooltip all'attributo title dell'elemento.

All'interno di tale html ho un elemento su cui voglio associare un gestore di eventi in linea onclick.

Purtroppo ho incontrato troppi livelli di virgolette per passare un parametro alla funzione che sto cercando di chiamare.

ho qualcosa di simile a questo:

<div title="<div onclick='myFunction(_____)'>My tooltip content</div>">My element</div> 

Questo funziona se ho bisogno di passare un intero a myFunction dal momento che non ha bisogno di un'altra serie di citazioni. Sfortunatamente voglio passare una stringa a myFunction. Come posso evitare ulteriormente questo parametro di stringa in modo che non chiuda la stringa onclick o title?

+2

Dai un'occhiata a una domanda simile qui: http://stackoverflow.com/questions/2004168/javascript-escape-quotes – wilsjd

+0

Grazie a @wilsjd, questa è davvero una soluzione funzionante. –

risposta

8

All'interno di attributi HTML, codificare le citazioni come entità HTML, ad es .:

<div title="This says &quot;Hello!&quot;"> 
    Hello! 
</div> 
+0

Questo ha funzionato. Puoi spiegare se questa è una parte dell'HTML che consente a '& quot's di essere eseguito come virgolette regolari in una funzione JavaScript o se questa è una magia eseguita da jQuery TOOLs o se è qualcos'altro? –

+1

Non è correlato a JavaScript. Questo è solo il modo in cui eviterai una doppia citazione all'interno di un attributo HTML con doppia virgoletta. È paragonabile a qualcosa come 'alert (" Questo dice \ "Ciao \" ")' in JavaScript. –

+0

Geniale, grazie. – Ansjovis86

0

sono stato in grado di trovare una soluzione al mio problema particolare. Non sono sicuro se questo funziona nel caso generale o se gli strumenti di jQuery stanno facendo qualcosa di magico per rimuovere la mia stringa, ma ho finito con la fuga con &quot; e ho valutato in Javascript valido che è stato eseguito.

Qualcosa di simile a questo:

<div title="<div onclick='myFunction(&quot;_____&quot;)'>My tooltip content</div>">My element</div> 

Io non capisco come questo sta lavorando per essere onesti. Mi piacerebbe se qualcuno potesse chiarire quale parte del processo stia cambiando quelle da &quot; in virgolette funzionali effettive.