クリックイベントで実行する関数がありますが、1回だけ実行したいのです。
クリック時に実行される関数は、ターゲット要素にプロットするグーグルマップを表します。関数は次のようになります:
Cluster.prototype.initiate_map_assembling = function(target, latitude, longitude) {
var canvas = $(target).children();
var coordinates = new google.maps.LatLng(latitude, longitude);
var options = {
zoom: 9,
center: coordinates,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map($(canvas)[0], options);
var marker = new google.maps.Marker({
position: coordinates,
map: map
});
};
そして、私はclick
このようなイベントでそれを実行しています:
Cluster.prototype.initiate_google_maps_action = function() {
var self = this;
return $(this.maps_wrapper_class).each(function(index, element) {
var canvas = $(element).parents().eq(3).find(self.map_canvas_wrapper_class);
return $(element).on('click', function(ev) {
var latitude = $(element).attr('data-latitude');
var longitude = $(element).attr('data-longitude');
self.initiate_map_assembling(canvas, latitude, longitude);
($(canvas).hasClass('selected')) ? $(canvas).removeClass('selected') : $(canvas).addClass('selected');
ev.preventDefault();
});
});
};
私が達成したいのは、ボタンをクリックするたびにプロットを停止することです。これは、コンテナーdivを非表示にするだけで、破棄しないため、必要なのは1回だけだからです。では、どうすればそれができますか?関数の実行時に一時変数を追加して(最初はtrueに設定し、開始時にfalseに設定して)、一時変数がtrueの場合はfalseを返しましたが、プロット関数内でfalseを返すことができなかったため、ほとんど成功しませんでした。 。