[jQuery] IE XML parsing problem
Hi,
I've managed to finish my first plugin and re-learn javascript at the same
time. So I'm not quite sure if this is a Javascript or jQuery issue.
The plugin loads external content from HTML or XML data using an AJAX call
to the file name generated from the LI element clicked.
DEMO: http://www.sozzi.cn/jquery/fish.fn.trial3.html
It works perfectly for the HTML variant but the XML fails in IE throwing a "
Object doesn't support this property or method" error.
It seems to happen in the XML call and parse function on the line finding
the "link" within the XML object:
(snip)...
$.get(XMLurl, function(xml){
$("site", xml).each(function(){ // step through each 'site' xml
node
$(this).find("link").each(function(){ // find 'link' insidet the 'site'
node and turn it into html
settings.parsedXML += "<div class='link'> "+$(this).text()+" ";
....(snip)
Any thoughts on what I'm doing wrong?
js:
/*
* AZlinker 0.4 Beta
* By Angelo Sozzi (http://www.sozzi.cn/jQuery)
* A jQuery plugin that will load XML or HTML links into divs
* by maping the UL>LI element names to filenames
* Demo at http://www.sozzi.cn/jQuery/a_zlink.html
*/
$.fn.AZlinker = function(settings) {
var settings = $.extend({
targetID: "#xml_here",
elemname: "li",
methodXML: true,
parsedXML: ""
}, settings || {}); // overwrite settings if there are any given in the
function call
// other plugin code
$("#busy").hide();
var list = $(this).find(settings.elemname)
list.hover(
function(){ $(this).next().addClass("medium");
$(this).prev().addClass("medium");
$(this).addClass("large");},
function(){ $(this).next().removeClass("medium");
$(this).prev().removeClass("medium");
$(this).removeClass("large");}
);
// make clicked li active, read html and use to retrieve html or xml
list.click(function(){ //Add an OnClick event to all <li>
list.removeClass("active"); //OnClick Remove the active class from all
li
$(this).addClass("active"); //Add class=active to clicked li
if (settings.methodXML){
var XMLurl = "xml/"+$.trim($(this).text())+".xml"; //Read out text from
litext li and make filename from it
loadXML(XMLurl);
}
else {
HTMLurl = "html/"+$.trim($(this).text())+".html"; //read out text from
litext li and make filename from it
$(settings.targetID).load(HTMLurl); //trim is used because text leaves a
space in IE
}
});
// Helper funtions
// The Ajax XML call and parsing to html
function loadXML(XMLurl){
settings.parsedXML="";
$.get(XMLurl, function(xml){
$("site", xml).each(function(){ // step through each 'site' xml
node
$(this).find("link").each(function(){ // find 'link' insidet the 'site'
node and turn it into html
settings.parsedXML += "<div class='link'> "+$(this).text()+" ";
}).end().find("description").each(function(){
settings.parsedXML += $(this).text()+ " </div>";
});
$(settings.targetID).html(settings.parsedXML);
});
});
};
// don't break the chain
return this;
}; // end jQuery plugin
--
View this message in context: http://www.nabble.com/IE-XML-parsing-problem-tf2469241.html#a6884561
Sent from the JQuery mailing list archive at Nabble.com.
_______________________________________________
jQuery mailing list
discuss@jquery.com
http://jquery.com/discuss/