Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: jQuery problema

Matso [27.03.2010 16:53:56]

#

Onks tässä jotain vikaa? Miks en saa tuosta layout.html:stä body:a?
Eli miks test.find("body").size() palauttaa nolla, vaikka kys. dokumentissa body on?

$.get(path+'layout.html', function(layout){
	var test = $(layout);
	alert(test.find("body").size()); // 0
}, "html");

Eikö jQueryllä toimi jotankin oikein kokonaisen html documentin syöttäminen $()-funktioon?

Edittiä:

jQuery näköjään käsittelee joitakin html-tageja erityisesti.

Seuraava alerttaa tyhjää:

var test = $('<div><body>asd</body></div>');
alert(test.find("body").text());

Mutta vastaavasti, jos muutan bodyn -> span, tulostuu "asd".

Voiko jQueryssä määrittää jotenkin, että dokumenttia käsitellään kuten xml:ää, eikä tehdä mitään poikkeuskäytäntöjä riippuen tagin nimestä / roolista html:ssä?

Edit2:

Ratkaisu tais löytyä. Ei riitä edes, että määrittää $.ajax kutsussa dataType:n "xml":ksi, vaan ratkaisu löytyy nimeämällä haettava dokumentti .xml-päätteiseksi. Eli ilmeisesti jQueryn käyttäytymiseen vaikuttaa palvelimen palauttamissa headereissa määritellystä dokumentin tyypistä.

Matso [28.03.2010 12:51:33]

#

Mutta, ratkaisu ei toimi IE:llä.. Ideoita?

Metabolix [28.03.2010 13:09:50]

#

No onko se dokumentti validia XML:ää?

Jos kuvauksesi ongelmasta pitää paikkansa, pulman voi kiertää etsimällä tekstistä body-tagin sisällön ja vaihtamalla ympärille vaikka div-tagin.

// Nollatavujen sallimiseksi voi muuttaa ([^\0]*) -> (([^\0]*\0*)*)
var body = teksti.match(/<body.*?>([^\0]*)<\/body>/)[1];
$("<div>" + body + "</div>");

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta