我正在尝试为我们的大学整理一张基于传单的地图。我们几乎完成了所有工作,但是我遇到了jQuery控件的问题。我们使用此代码块突出显示jQuery按钮并将命令发送到Leaflet。

<script type="text/javascript">
jQuery(function(){
         $(".img-swap").on('click', function() {
            if ($(this).attr("class") == "img-swap") {
            this.src = this.src.replace("_off","_on");
            } else {
            this.src = this.src.replace("_on","_off");
            }
            $(this).toggleClass("on");
        });
});
</script>
<style type="text/css">
.img-swap {cursor: pointer;}
</style>


<p align="center"><img src="images/item1_off.png" class="img-swap" width="94" height="93" alt="Locate Item 1" /></p>
<p align="center"><img src="images/item2_off.png" class="img-swap" width="106" height="76" alt="Locate Item 2" /></p>


当您单击对象时,此代码可以正常工作。我们遇到的问题是,当单击一个新对象时,我们需要触发一个事件以取消选择一个对象(并撤消相应的Leaflet事件)。

例如,如果我们有五个项目,而您单击第一个项目,它将变成红色,并且地图突出显示一些建筑物。单击第二项时,它应变为红色,将第一项恢复为正常状态,并取消突出显示突出显示的建筑物。

我找不到办法实现这一目标。它仅适用于被单击的项目,不适用于其他项目。对此代码有修改吗?

谢谢!

最佳答案

请尝试以下操作:

jQuery(function(){
    var selected = null;

    $(".img-swap").on('click', function() {
        if (selected) {
            selected.src.replace("_on","_off");
            $(selected).removeClass("on");
        }
        this.src.replace("_off","_on");
        $(this).addClass("on");
        selected = this;
    });
});

10-07 19:13
查看更多