2011-05-09 3 views
2

j'utilise google map dans mon nouveau projet, et j'ai une liste déroulante qui contient beaucoup d'endroits, ce combo a deux attributs (longitude, latitude) quand ma page se charge j'ai fonction que marqueurs de terrain pour tous les lieux dans ce combo cette fonction est ici:sélectionnez l'option par texte en utilisant jquery

//Set All mohafzat markers 
    function setMohMarkers(){ 
    //Loop Through mohafzat Combo 
    $("#moh").each(function(i){ 
    //Remove Old Markers 
      //clearOverlays(); 
      //loop Through it's Options 
      $('option',this).each(function(i){ 
      var midx=$(this).index(); 
      if(midx==0){ 
       //Don't Plot 0 Index item 

      }else{ 
      var idx=$(this).index();//get Current Index 
      var lon=$(this).attr('lng'); 
      var lat=$(this).attr('lat'); 
      var mname=$(this).text(); 
      //point's On Map 
      var myLatlng = new google.maps.LatLng(lat,lon); 

      //put Marker 
      var marker = new google.maps.Marker({ 
       position: myLatlng, 
       map: map, 
       icon:image, 
      //animation: google.maps.Animation.BOUNCE, 
       title:mname 
       }); 


      google.maps.event.addListener(marker, 'click', function() { 
       map.setZoom(10); 
       map.setCenter(marker.latlng); 
       //Set mohafzat Combo to selected Marker 
       //$("#moh option:contains(" + marker.title +")").attr("selected","selected"); 
       $('#moh option:[text="' + marker.title + '"]').attr('selected', true); 

       //Trigger Change Function 

       $("#moh option:contains(" + marker.title +")").trigger('change'); 

       }); 
       //push marker To my array(help me of deleting them :D) 
       Allmarkers.push(marker); 
      }}); 
      //End Click Function 
    }); 
    } 

ce code fonctionne très bien sur Internet explorer, mis avec firefox quand je clique sur le marqueur pour la première fois qu'il zoomer à l'endroit choisi et si i avoir sélectionné (index 0) de (select) tag appelle cette fonction pour tracer à nouveau tous les endroits et zoomer sur la carte pour les montrer tous (jusqu'à ici tout va bien) mais si j'ai cliqué sur le même marqueur, ça ne fait rien! ne mettez même pas le contenu du titre de marqueur à ma zone de liste déroulante à cette ligne:

$('#moh option:[text="' + marker.title + '"]').attr('selected', true); 

ce qui me rend nerveux que ce code fonctionne très sur IE sera !!!!

+0

Je ne pense pas qu'il est censé être deux points entre '' option' et [text = ...] '. Je ne suis pas sûr de savoir à quel point jQuery pardonne sa syntaxe, mais je l'enlèverais de toute façon. –

+0

quelle version de jQuery. la propriété 'attr' a été modifiée en 1.6: http://stackoverflow.com/questions/5874652/prop-vs-attr – Neal

+0

Vos éléments option contiennent-ils réellement un attribut de texte? '[text = ...]' vérifie l'attribut nommé "text", [': contains'] (http://api.jquery.com/contains-selector/) vérifie le texte contenu. Vous avez déjà la bonne version commentée –

Répondre

Questions connexes