Autor Zpráva
Mufna
Profil
Zdravím Vás. Nejde mi odstranit atributy alt="" a title="" u <img>. Vyplodil jsem už pomocí jQuery 4 různé způsoby zápisu téhož, tedy toho co chci udělat - tzn. odstranit, resp. nezobrazovat ty dva atributy v prohlížeči (v HTML však zůstávají). Všechny prohlížeče mimo IE (konkrétně viděno v IE7) vezmou kterýkoliv z těchto zápisů a udělají vždy přesně to, co potřebuju. Vypadá to tedy asi na nějaký bug IE. Ale jak to teda mám pro to nešťastný IE udělat ? Už fakt nevím co s tím. Máte někdo nějaký nápad nebo víte o co se jedná a můžete poradit ? Předem díky.
// 1. verze
jQuery(this).find("img").removeAttr("alt");
jQuery(this).find("img").removeAttr("title");

// 2. verze
jQuery(this).find("img").attr("alt").removeAttr("alt");
jQuery(this).find("img").attr("title").removeAttr("title");

// 3. verze
jQuery(this).find("img").attr("alt", '');
jQuery(this).find("img").attr("title", '');

// 4. verze
jQuery(this).find("img").attr({'alt': '','title': ''});


Jo, a ta nefunkčnost v IE se projevuje tak, že při prvním načtení stránky (nebo po reloadu) se vůbec nezobrazí příslušný obrázek. A zajímavý postřeh: když jakkoliv přímo v prohlížeči změním velikost písma, tak najednou se obrázek objeví a pak už všechno funguje tak jak má (je to součástí fotogalerie). To je teda fakt zvláštní ...
_es
Profil
jQuery asi pristupuje k týmto záležitostiam spôsobom, ktorý nemusí vždy fungovať v IE. Možno to má niečo spoločné s týmto.
Takýto postup bez jQuery nefunguje?:
obrazok.alt = obrazok.title = void 0;
Mufna
Profil
_es
Takýto postup bez jQuery nefunguje?

samostatně asi ano, ale já jQuery potřebuju, je na tom postavená celá fotogalerie, která jinak funguje perfektně. Něco jako:
jQuery(this).find("img").alt = jQuery(this).find("img").title = void 0;

bohužel nefunguje a nevím, jak bych to pak měl jinak zapsat
Nox
Profil
[#3] Mufna:
find() vrací jQuery objekt, který nemá atributy dle DOMu, aby to pracovalo takto je třeba použít http://api.jquery.com/get

[#1] Mufna
verze 2 je špatně i teoreticky, protože naopak attr() vrací hodnotu a ne jQuery objekt

1 a 3 by měly fungovat... režim kompatibility s IE7 funguje i na JS?
když sem jen rychle skočil na mozilla.org
pro IE8 a IE7-compat.
alert( $("img[alt=Firefox]").attr("alt") ); // Firefox
$("img[alt=Firefox]").removeAttr("alt");
alert( $("img[alt=Firefox]").attr("alt") ); // undefined
Mufna
Profil
Nox

1 a 3 by měly fungovat
hmm, ale nefungují (v IE7)

režim kompatibility s IE7 funguje i na JS?

to je tvá otázka ? Pokud ano, tak nevím přesně co máš na mysli + má odpověď zní: nevím
Chamurappi
Profil
Reaguji na Noxe:
find() vrací jQuery objekt
Hlavně vrací pole a ne jeden element. Proč get? Nestačí normálně projet indexy pole?

1 a 3 by měly fungovat...
Nefungují v Exploreru, protože skutečný alt a skutečný title se zřejmě liší od atributů alt a title. To je docela běžné.

režim kompatibility s IE7 funguje i na JS?
Samozřejmě.



Reaguji na Mufnu:
Vypadá to tedy asi na nějaký bug IE.
Spíš na bug jQuery, pokud má být cílem frameworku sjednotit nekompatibility.

samostatně asi ano, ale já jQuery potřebuju, je na tom postavená celá fotogalerie
Nepoutřebuješ, jQuery je jen jedna funkce v JS, nic víc, nic míň. To, že ho využíváš, přeci neznamená, že nemůžeš psát věci i bez něj.
Scorp
Profil *
Zdravím,
namísto: .removeAttr("alt");
použij: .prop("alt", false);

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0