Autor Zpráva
vospunt
Profil
Ahoj, mám skript, který mi na webu tam kde je tag "a" s id "napoveda" hodit dialog ... div v html je.
V Chrome, FF.... funguje v klidu ... v IE jakákoli verze se skript provede pouze na první odkaz (zkoušel jsem i přes "each" -> nepomohlo ...) a to ještě tak, že ve fci html nezapíše do divu nic a vyhodí prázdný dialog...dám-li místo html text vepíše text správně ale nenastyluje, taktéž fce load, proto potřebuji HTML.
Takře prosím, nevíte někdo proč to udělá pouze na první prvek, a proč to nedosadí HTML části ?

$(document).ready(function() {
	$("a#napoveda").click(function() {
		var soubor = $(this).attr("href");
		cast = soubor.split("?");
	/*	if ($.browser.msie) {
			if (cast[1] == "") {
				predat = cast[0] + "?ajax=true";
			} else {
				predat = soubor + "&ajax=true";
			}
			$("div#dialogs").load(predat).dialog("open");
		} else {*/
		if (cast[1] == "") {
			predat = cast[0] + "?ajax=true";
		} else {
			predat = soubor + "&ajax=true";
		}
			$.ajax({
				type: 'GET',
				url: cast[0],
				data: predat,
				success: function(msg) {
					$("div#dialogs").html(msg).dialog("open");
				}
			});
		/*}*/
		return false;
	});
});


Děkuji za nápady
Chamurappi
Profil
Reaguji na vospunta:
Na tvém místě bych lépe lokalizoval chybu (případně chyby) a pak bych teprve prosil o radu.

nevíte někdo proč to udělá pouze na první prvek
Z kódu jsem nevyčetl nic, co by mělo něco dělat s více prvky.
vospunt
Profil
má to dělat vždy když je v tagu A id napoveda
př.
<a id="napoveda" href="http://google.com/soubor.txt">soubor.txt</a>
<span>text nějaký dlouhý text ....</span>
<a id="napoveda" href="http://google.cz/souborcz.txt">soubor v CZ</a>


a pokud kliknu na ten nebo ten prostě má to vzít href ... zeptat se co tam je a dosadit do divu který mám převedený na skrytý dialog a potom ho zobrazím
Chamurappi
Profil
Reaguji na vospunta:
To jsem pochopil, že to nefunguje. Zjisti, co přesně nefunguje. Je to AJAX (ten zmiňuješ v titulku)? Je to dialog (ten také zmiňuješ)? Nebo snad jQuery neumí v části prohlížečů najít dotyčné elementy?
vospunt
Profil
dialog je v pořádku ale...
když jsou dva elementy s id napoveda tak v jen IE udělá: jeden vyhodíš dialog s prázdným polem ale když použiju míísto fce html fci text tak to vypíše správně zdroják toho souboru ... a na dalších elementech to neudělá vůbec nic ani to return false nefunguje jakokdyby javascript ani jquery na to neměli vliv a normálně přejde na stránku v href
Chamurappi
Profil
Reaguji na vospunta:
Hm, tak prověř, co přesně nefunguje. Je opravdu tak těžké ověřit si, který kód se ještě zpracovává a který už ne? To je jak ve školce. (V nějaké programátorské.)

nefunguje jakokdyby javascript ani jquery na to neměli vliv
Tudy namiř své pátrání.
vospunt
Profil
zkoušel jsem tam dát alert hned do té funkce na začátek ale na dalších elementech se to neprojevilo jak mám vědět co to dělá ani v konzoli nic není myslím tím v chrome ... ie nic nemá tak nevím .. ale prostě nevím co nefunguje proto se ptám co by to mohlo být problém jsem popsal celkem podrobně ... ale pokud je v jquery ve fci return false nemělo by to provízt nic ani jej přesměrovat jako normální odkaz ... ale dělá to takže předpokládám že jquery v ie na další prvky nesahá nebo prostě nevím proto se ptám
Chamurappi
Profil
Reaguji na vospunta:
ie nic nemá tak nevím
Jak to, že nemá? Hledej, šmudlo. Okénko na chybové hlášky má skoro odjakživa a od verze 8 má i „Nástroje pro vývojáře“. V konzoli bys ale nic neviděl.

takže předpokládám že jquery v ie na další prvky nesahá
Bingo. Dotaz nesouvisí ani s AJAXem, ani s jQuery dialogem. Nevykonává-li se ani alert, je půlka ukázaného zdrojáku zbytečná a titulek zavádějící.
Funkce na zpracování selektorů uvnitř jQuery neumí najít více elementů se stejným ID. Metoda document.getElementById totiž vrací vždy jen jeden element. V novějších prohlížečích se dotyčná funkce z jQuery nevolá a využívá se nativní selektorové hledátko, kterému špatně sestavené HTML nevadí. Oprav si HTML kód (= nepoužívej duplicitní ID) a tím se nekompatibility způsobené frameworkem zbavíš.

v IE jakákoli verze
Mezi ty novější prohlížeče patří i Explorerové 8 a 9. Pokud ti to v nich nefunguje, máš je přepnuté do sedmičkového režimu, nebo do quirku.
vospunt
Profil
takže šlo by nebrat id napověda ale třeba rel="napoveda[pole]" takhle by to šlo ? nebo rel=napoveda[]" že by se to pole dosazovalo automaticky ? tohle by mohlo pomoct ? nebo id="napoveda[]" může být ?
vospunt
Profil
jo výborný rel="napoveda[]" s $("a[rel='napoveda[]']"). .... funguje přesně jak jsem chtěl díky za pomoc a ještě prosím proč mi nejde v IE funkce .each() ... je to taky tím, že vybere pouze jeden prvek ? když zadám
$("a#napoveda[rel!='napoveda[]']").each(function() {
  $(this).attr("rel","napoveda[]");
  // pro zkoušku jsem zadal alert
  alert("oprava");
})

ale nevyhodilo mi to nic ... je to taky tím ? lze nějak jinak doplnit rel="napoveda[]" k prvkům kde je id=napoveda aby to IE bral ? prosím automaticky myslím doplnit ne ručně procházet web ... sice to budu dělat když někde narazím ale prozatím jestli by to nešlo
Chamurappi
Profil
Reaguji na vospunta:
ale třeba rel="napoveda[pole]" takhle by to šlo ?
Pokud jsi čuně, tak ano. Atribut rel vyjadřuje vztah stávající stránky k odkázané, není to prostor pro libovolnou informaci, kterou neumíš narvat jinam.
O třídách jsi ještě neslyšel?

je to taky tím, že vybere pouze jeden prvek ?
Metoda document.getElementById (kterou Sizzle v jQuery používá) najde jen jeden prvek. Nemůžeš touto metodou najít více prvků. Takže ani nemůžeš najít více prvků za tím účelem, abys jim dal jiný atribut, podle kterého bys je mohl najít.

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