2010-11-13 12 views
0

J'ai trouvé une solution soignée pour la souris sur le panneau de mise à jour, très simple.Lire XML pour les options dans le panneau de mise à jour (php jquery)

Ce que je voudrais faire est de lire les « options » de XML au lieu de chaîne statique comme dans cet exemple:

$(document).ready(function(){ 
        var options = {'solutions':"<h1 class='middleh1'>Solving Your Tech Problems.</h1><p>Below are a couple of areas that Felecan specializes in:<ul><li>Web Application Development</li><li>Search Engine Marketing</li><ul>",'passion':"<h1 class='middleh1'>Welcome To Felecan!</h1><p>Felecan believes in helping companies and individuals realize their full potential on the Internet with top of the line tools and support. This means fast response times, and help for your technology problems right away.</p>",'technology':"<h1 class='middleh1'>Technology Done Right.</h1><p>From PHP to Python, the Django framework, and jQuery for JavaScript/Ajax your ideas can become professional products for less than you thought!"} 
        var array = ['solutions','technology','passion']; 
        random =Math.floor(Math.random()*2) 
        $("#doc_box_right").html(options['passion']); 
        $("#solutions").css("cursor","pointer"); 
        $("#technology").css("cursor","pointer"); 
        $("#passion").css("cursor","pointer"); 
        $("#solutions").mouseover(function() { 
         $("#doc_box_right").html(options.solutions); 
        }); 
        $("#passion").mouseover(function() { 
         $("#doc_box_right").html(options.passion); 
        }); 
        $("#technology").mouseover(function() { 
         $("#doc_box_right").html(options.technology); 
        }); 
       }); 

<div id="doc_box_left"> 
        <ul style="list-style-image: url(http://www.felecan.com/media/images/arrow.png);"> 
         <li id="passion">Passion</li> 
         <li id="solutions">Solutions</li> 
         <li id="technology">Technology</li> 
        </ul> 
       </div> 
       <div id="doc_box_right"> 
       </div> 

Je dois créer les options, les pointeurs de curseur, et les effets mouseover tous d'un xml doc que j'ai. Le doc xml a des nœuds avec deux attributs:

<statements> 
<statement title="A Title" statement="The statement"/> 
<statement title="Another Title" statement="The statement for this"/> 
</statements> 

le titre serait les éléments de la liste, la déclaration serait la mise à jour dans le html 'doc_box_right'

solution de travail:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax({ 
      type: "GET", 
      url: "php/docstatement_genxml.php", 
      dataType: "xml", 
      success: parseXml 
     }); 
    }); 
    function parseXml(xml) { 
     var items = []; 
     $(xml).find("statement").each(function() { 
      var title = $(this).attr("title"); 
      var titleid = (title.substr(0, 8)).replace(" ", "_"); 
      items.push('<li id="' + titleid + '">' + title + '</li>'); 
     }); 
     $('#doclist').append(items.join('')); 
     $(xml).find("statement").each(function() { 
      var title = $(this).attr("title"); 
      var titleid = (title.substr(0, 8)).replace(" ", "_"); 
      var id = '#' + titleid; 
      var statement = $(this).attr("text"); 
      $(id).css("cursor", "pointer"); 
      $(id).mouseover(function() { 
       $("#doc_box_right").html('<h2>' + title + '</h2><p>' + statement + '</p>'); 
      }); 
     }); 

    } 
</script> 

      <div id="doctrine_box"> 
       <div id="doc_box_left"> 
        <ul id="doclist"> 
        </ul> 
       </div> 
       <div id="doc_box_right"> 
       </div> 
      </div> 
+0

il y a wa s un problème avec le filetage dans le javascript aussi. C'est pourquoi j'ai dû ajouter les éléments de la liste AVANT de mettre les sélecteurs et les événements sur eux. –

Répondre

1
<statements> 
<statement title="A Title" statement="The statement" id="title_a"/> 
<statement title="Another Title" statement="The statement for this" id="title_b"/> 
</statements> 

var xml_id = $(this).attr("id"); 
$("#" + xml_id).css("cursor", "pointer"); 

$("#" + title) est lu comme $('#A title'), cela semble être le problème

+0

J'ai ajouté une variable titleid qui a résolu ce problème mais il ne semble pas analyser. J'ai ajouté une alerte pop à la fonction parseXML et elle n'a jamais fonctionné ??? –

+0

@Chris: 'var title = $ (this) .attr (" title ");', rejeter le '.ValueOf' – ajreal