2014-10-01 224 views
-1

我正在使用liflet API。 我在地图上创建标记。 当一个标记被按下时弹出鞋帮。在弹出的 中有两个按钮。 我想要做的是让按钮在按下时改变颜色。 问题是,当我尝试重置颜色时弹出被打开到原来的 只有当我第二次打开弹出窗口才会发生这种情况。 我检查了弹出事件和点击事件工作。 按钮创建代码:html按钮不会改变颜色

if(!marker.getPopup()){ 
     var tooltipContent = $('<div />'); 
     $.each(marker._myId, function(index,value){ 
      var current = $("<button id=\"router-"+value.properties.name+"\" type=\"button\" style=\"width:100%;color:black\" class='tooltipName' >"+value.properties.name+"</button>") 
       .click(function(){ 
        handleClickOnSwitch(value); 
        var button=$("#router-"+value.properties.name); 
        button.css("background-color","grey"); 

       }); 
      tooltipContent=tooltipContent.append(current); 
     }); 
     marker.bindPopup(tooltipContent[0],{'closeButton' : false,}).openPopup(); 
    } 

上点击我改变按钮科勒灰色。 各弹出式打开时我打电话:

function resetButtonPress(marker){ 
    $.each(marker._myId, function(index,router){ 
     var button=$("#router-"+router.properties.name); 
     button.css("background-color","RGB(221,221,221)"); 
    }); 
} 

我希望得到任何帮助。

+0

jsfiddle或它没有发生。 – Frondor 2014-10-01 11:42:03

+0

我不能在这里发布整个代码,因为它依赖于外部事件。 – raven 2014-10-01 11:43:29

+0

我在说jsfiddle.net做一个小提琴,如果你正在使用库,你总是可以在左边菜单中添加外部链接,最后在这里保存并分享你的工作,这样我们就可以很容易地看到它的工作。 – Frondor 2014-10-01 11:44:53

回答

1

最终问题的根本原因是竞争条件。 我试图更新的按钮元素创建速度不够快,结果 颜色更改没有生效。 我的解决方案是每次打开时在弹出窗口中创建按钮。 这样我可以绕过这个问题。