Autor Zpráva
pilniczek
Profil
Zdravím!

Knihovna: jquery-1.10.2.min.js.
Jde o část on click funkce, ve které nefunguje if.
Po zavolání funkce a před vyhodnocením ifu tedy zjišťuju, co je v jednotlivých proměnných.
Konzole:

> $(this)
[<a href=​"pekne" class=​"active">​pěkné​</a>​]

> $("nav").last().find(".active")
[<a href=​"pekne" class=​"active">​pěkné​</a>​]

> $(this) === $("nav").last().find(".active")
false

Proč je to porovnání false?

> $(this).hasClass("active")
true

S tímto je if vyhodnocen správně a vše je OK. Zajímá mě, proč je to porovnání false... Nebo kam se mám podívat, abych zjistil, čim to...

Díky moc!
maks
Profil
pilniczek:
oba objekty mají sice stejnou třídu, ale pořád to jsou dva různé objekty.

Čeho se snažíš dosáhnout? Jestli zjištění, zda mají stejnou třídu, porovnávej třídy. Jestli něčeho jiného, porovnávej něco jiného.
Joker
Profil
pilniczek:
Proč je to porovnání false?
Protože to není stejný objekt. Jsou to dva různé jQuery objekty, které se shodou okolností týkají stejného HTML prvku.

Příklad:
> $(this).selector
""
> $("nav").last().find(".active").selector
".active"
=> ty objekty dokonce ani neobsahují stejná data.

Nicméně jeden jejich atribut je stejný, a sice ten prvek v DOMu. Takže tohle by mělo fungovat:
$(this)[0] == $("nav").last().find(".active")[0]

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0