2016-05-05 14 views
-1

結果のdiv ID名があります。ここで私はドラッグアンドドロップマーカーが作成されたリンク要素です。また、link要素を動的にlngの値で書く。これは最初に要素をリンクして作成されます。後でマーカーをドラッグアンドドロップすると、2番目のリンク要素が作成され、新しい緯度経度値が設定されます。それから私がリンクをクリックすると、関数は機能しません。 moveMarkerが定義されていないというエラーが表示されます。Jquery動的要素関数

<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

フルコードを投稿してください。 – Poria

+0

フルコードは1200行です。 –

答えて

0

あなたがそのような関数式で名前moveMarkerを入れるときは、名前のスコープは、関数の本体のみです。外部から関数を呼び出す必要がある場合は、その関数を外部に定義する必要があります。

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>'); 

あなたはすでにそれをしないonclick属性を持っているので、あなたは$("#results").on("click")コードは必要ありません。

代わりにonclick属性を削除し、イベント委任で行うことができます。

$("#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

それは私が同じエラーを得る仕事をしなかったmovemarkerは定義されていません –

+0

グローバルスコープの 'moveMarker'の定義はありますか? 'onclick'関数はグローバルでなければなりません。 – Barmar

+0

$( "#results")。appendは内部$( "#result")になりますか? –

関連する問題