2016-05-05 3 views
-1

Es gibt eine Div-ID-Name ist Ergebnisse. Hier, wenn ich Marker ziehe und ziehe, wird ein Link ein Element erstellt. Auch schreibe ich lat, lng value von einem Element dynamisch verknüpfen. Dies wird zuerst Link ein Element erstellt. Später, wenn ich Marker ziehe, wird ein zweites Link-Element erzeugt und es hat einen neuen Lat-Wert. Wenn ich dann auf einen Link klicke, funktioniert eine Funktion nicht. Ich bekomme einen Fehler, wenn moveMarker nicht definiert ist.Jquery dynamische Elementfunktion

<div id="results" style="width:115px; height:40px; background-color:#46b8da;"></div> 
    <script> 
    $("#results").append('<a onclick="moveMarker('+lat+','+lng+')">'+lat+" "+lng+'</a>'); 
     $("#results a").on('click', '#results a', function moveMarker(lat,lng) { 
      var latlng = new google.maps.LatLng(lat,lng); 
      marker.setPosition(latlng); 
     });  

    </script> 
+1

posten Sie Ihren vollständigen Code .. – Poria

+0

voller Code ist 1200 Zeilen. –

Antwort

0

Wenn Sie den Namen wie die moveMarker in der Funktion Ausdruck setzen, ist der Umfang des Namens nur der Körper der Funktion. Wenn Sie die Funktion von außen aufrufen müssen, müssen Sie sie extern definieren.

function moveMarker(lat,lng) { 
    var latlng = new google.maps.LatLng(lat,lng); 
    marker.setPosition(latlng); 
} 

$("#results").append('<a onclick="moveMarker('+lat+','+lng+')">'+lat+" "+lng+'</a>'); 

Sie brauchen nicht die $("#results").on("click") Code, weil Sie bereits die onclick Attribut haben, das es tut.

Sie können stattdessen das onclick Attribut entfernen und es mit Ereignisdelegierung tun.

$("#results").append('<a class="move">'+lat+" "+lng+'</a>'); 
$("#result").on("click", "a.move", function() { 
    var latlong = $(this).text().split(' '); 
    moveMarker(latlong[0], latlong[1]); 
}); 
+0

Es hat nicht funktioniert Ich bekomme denselben Fehler movemarker ist nicht definiert –

+0

Ist die Definition von 'moveMarker' im globalen Bereich? Onclick-Funktionen müssen global sein. – Barmar

+0

$ ("# results"). Append wird inner $ ("# result") sein. –