Клуб API Карт

Дублируется содержимое балуна

spearance
2 февраля 2011, 21:54

При клике в одну и ту же метку дублируется содержимое внутри балуна. Если кликать по разным меткам то все в порядке. Фрагмент кода:

function createPlacemark (point, name, description, cl, link, img, cost) {

var styleName = "my#" + cl;
var s = new YMaps.Style();
s.iconStyle = new YMaps.IconStyle();
s.iconStyle.href = "/i/" + cl +"_icon.png";
s.iconStyle.size = new YMaps.Point(41, 44);
s.iconStyle.offset = new YMaps.Point(-10, -40);

if(cl == "hotel"){
var template = new YMaps.Template(
"<table class=\"balContent\">\
<tr valign=\"top\">\
<td class=\"balLeft\"><img src=\"$[img|/i/gallery/w56.png]\" width= /></td>\
<td class=\"balRight\">\
<a href=\"$[link|/]\">$[name|отель]</a>\
<div>$[description|адрес]</div>\
<div class=\"cost\">$[cost|0]</div>\
</td>\
</tr>\
</table>");
s.balloonContentStyle = new YMaps.BalloonContentStyle(template);
}

s.balloonStyle = {template: new YMaps.LayoutTemplate(myBalloonLayout)};

YMaps.Styles.add(styleName, s);

var placemark = new YMaps.Placemark(point,{style: styleName});

placemark.name = name;
placemark.description = description;
placemark.link = link;
placemark.img = img;
placemark.cost = cost;

return placemark
}

function myBalloonLayout() {
this.element = YMaps.jQuery(
"<div class=\"b-simple-balloon-layout\">\
<div class=\"content\"></div>\
<div class=\"close\"></div>\
<div class=\"tail\"></div></div>");
this.close = this.element.find(".close");
this.content = this.element.find(".content");
this.disableClose = function(){
this.close.unbind("click").css("display", "none");
};
this.enableClose = function(callback){
this.close.bind("click", callback).css("display", "");
return false;
};
this.onAddToParent = function (parentNode) {
YMaps.jQuery(parentNode).append(this.element);
this.update();
};
this.onRemoveFromParent = function () {
this.element.remove();
};
this.setContent = function (content) {
content.onAddToParent(this.content[0]);
};
this.update = function () {
this.element.css("margin-top", this.getOffset().getY());
};
this.getOffset = function () {
return new YMaps.Point(0, -this.content.height() -35);
};
this.setMaxSize = function (maxWidth, maxHeight) {};
};
5 комментариев
Подписаться на комментарии к посту
Пожалуйста, скрывайте длинные фрагменты кода под врезкой.
на будущее учту :)
this.setContent = function (content) {
    content.onAddToParent(this.content[0]);
};

А вы this.content[0] чистить  пробовали?
ИМХО эффект в том и есть что страрые данные из него не уходят.

сделал так:


this.setContent = function (content) {


YMaps.jQuery($(this.content[0]).text(""));


content.onAddToParent(this.content[0]);


};


проблема исчезла

спасибо, была така ж фигня.

Добавление строки

YMaps.jQuery($(this.content[0]).text(""));
все решило.