2013-04-02 14 views
9

zamierzam poprzedzić to z: „Wiem, że to złe praktyki i brzydki Hack (i przepraszam), ale ...”Trzeci poziom cytowania w HTML i JavaScript

I m za pomocą widgetu podpowiedzi narzędzia jQuery TOOL, aby wyświetlić etykietkę narzędzia na elemencie HTML, gdy użytkownik najedzie na niego kursorem. Za pomocą tego widgetu dodajesz html podpowiedzi do atrybutu elementu title.

Wewnątrz tego html mam element, na którym chcę związać wewnętrzny program obsługi zdarzeń onclick.

Niestety, natknąłem się na zbyt wiele warstw cytatów, aby przekazać parametr do funkcji, którą próbuję wywołać.

mam coś takiego:

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

to działa, jeśli muszę zdać liczbę całkowitą myFunction ponieważ nie potrzebuje innego zestawu cytatów. Niestety chcę przekazać ciąg znaków do myFunction. W jaki sposób można dodatkowo uciec z tego parametru łańcuchowego, aby nie zamykać ciągu znaków onclick lub title?

+2

Sprawdź podobne pytanie tutaj: http://stackoverflow.com/questions/2004168/javascript-escape-quotes – wilsjd

+0

Dzięki @wilsjd, to rzeczywiście działa rozwiązanie. –

Odpowiedz

8

Wewnątrz atrybutów HTML, należy zakodować cytaty jako podmioty HTML, np .:

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

To działało. Czy możesz wyjaśnić, czy jest to część kodu HTML, która pozwala '' być uruchamiane jako zwykłe cytaty w funkcji JavaScript lub czy jest to magia wykonywana przez narzędzia jQuery lub coś innego? –

+1

Nie ma związku z JavaScript. W ten sposób unikniesz podwójnego cudzysłowu w podwójnym cudzysłowie HTML. Jest porównywalne z czymś w stylu 'alert (" To mówi \ "Hello \" ")' w JavaScript. –

+0

Geniusz, dziękuję. – Ansjovis86

0

udało mi się znaleźć rozwiązanie do mojego konkretnego problemu. Nie jestem pewien, czy to działa w ogólnym przypadku, czy też narzędzie jQuery TOOL robi coś magicznego, aby uwolnić mój ciąg znaków, ale skończyło się na tym, że uciekłem z &quot; i dokonałem oceny w prawidłowym kodzie JavaScript, który został wykonany.

coś takiego:

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

I naprawdę nie rozumiem, jak to działa, aby być uczciwym. Chciałbym, jeśli ktoś mógłby wyjaśnić, jaka część procesu zmienia te rzeczywiste funkcjonalne cytaty.