删除输入框

时间:2011-01-27 15:23:01

标签: javascript jquery html

您如何在不破坏所有其他控件的情况下删除“更改颜色”输入框?

由于

代码低于我关注的位在最后一行

function PolygonCreator(map) {
    this.map = map;
    this.pen = new Pen(this.map);
    var thisOjb = this;
    this.event = google.maps.event.addListener(thisOjb.map, 'click', function (event) {
        thisOjb.pen.draw(event.latLng);
    });
    this.showData = function () {
        return this.pen.getData();
    }
    this.showColor = function () {
        return this.pen.getColor();
    }
    this.destroy = function () {
        this.pen.deleteMis();
        if (null != this.pen.polygon) {
            this.pen.polygon.remove();
        }
        google.maps.event.removeListener(this.event);
    }
}

function Pen(map) {
    this.map = map;
    this.listOfDots = new Array();
    this.polyline = null;
    this.polygon = null;
    this.currentDot = null;
    this.draw = function (latLng) {
        if (null != this.polygon) {
            alert('Click Reset to draw another');
        } else {
            if (this.currentDot != null && this.listOfDots.length > 1 && this.currentDot == this.listOfDots[0]) {
                this.drawPloygon(this.listOfDots);
            } else {
                if (null != this.polyline) {
                    this.polyline.remove();
                }
                var dot = new Dot(latLng, this.map, this);
                this.listOfDots.push(dot);
                if (this.listOfDots.length > 1) {
                    this.polyline = new Line(this.listOfDots, this.map);
                }
            }
        }
    }
    this.drawPloygon = function (listOfDots, color, des, id) {
        this.polygon = new Polygon(listOfDots, this.map, this, color, des, id);
        this.deleteMis();
    }
    this.deleteMis = function () {
        $.each(this.listOfDots, function (index, value) {
            value.remove();
        });
        this.listOfDots.length = 0;
        if (null != this.polyline) {
            this.polyline.remove();
            this.polyline = null;
        }
    }
    this.cancel = function () {
        if (null != this.polygon) {
            (this.polygon.remove());
        }
        this.polygon = null;
        this.deleteMis();
    }
    this.setCurrentDot = function (dot) {
        this.currentDot = dot;
    }
    this.getListOfDots = function () {
        return this.listOfDots;
    }
    this.getData = function () {
        if (this.polygon != null) {
            var data = "";
            var paths = this.polygon.getPlots();
            paths.getAt(0).forEach(function (value, index) {
                data += (value.toString());
            });
            return data;
        } else {
            return null;
        }
    }
    this.getColor = function () {
        if (this.polygon != null) {
            var color = this.polygon.getColor();
            return color;
        } else {
            return null;
        }
    }
}

function Dot(latLng, map, pen) {
    this.latLng = latLng;
    this.parent = pen;
    this.markerObj = new google.maps.Marker({
        position: this.latLng,
        map: map
    });
    this.addListener = function () {
        var parent = this.parent;
        var thisMarker = this.markerObj;
        var thisDot = this;
        google.maps.event.addListener(thisMarker, 'click', function () {
            parent.setCurrentDot(thisDot);
            parent.draw(thisMarker.getPosition());
        });
    }
    this.addListener();
    this.getLatLng = function () {
        return this.latLng;
    }
    this.getMarkerObj = function () {
        return this.markerObj;
    }
    this.remove = function () {
        this.markerObj.setMap(null);
    }
}

function Line(listOfDots, map) {
    this.listOfDots = listOfDots;
    this.map = map;
    this.coords = new Array();
    this.polylineObj = null;
    if (this.listOfDots.length > 1) {
        var thisObj = this;
        $.each(this.listOfDots, function (index, value) {
            thisObj.coords.push(value.getLatLng());
        });
        this.polylineObj = new google.maps.Polyline({
            path: this.coords,
            strokeColor: "#3333FF",
            strokeOpacity: 1.0,
            strokeWeight: 2,
            map: this.map
        });
    }
    this.remove = function () {
        this.polylineObj.setMap(null);
    }
}

function Polygon(listOfDots, map, pen, color) {
    this.listOfDots = listOfDots;
    this.map = map;
    this.coords = new Array();
    this.parent = pen;
    this.des = 'Hello';
    var thisObj = this;
    $.each(this.listOfDots, function (index, value) {
        thisObj.coords.push(value.getLatLng());
    });
    this.polygonObj = new google.maps.Polygon({
        paths: this.coords,
        strokeColor: "#3333FF",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#3333FF",
        fillOpacity: 0.35,
        map: this.map
    });
    this.remove = function () {
        this.info.remove();
        this.polygonObj.setMap(null);
    }
    this.getContent = function () {
        return this.des;
    }
    this.getPolygonObj = function () {
        return this.polygonObj;
    }
    this.getListOfDots = function () {
        return this.listOfDots;
    }
    this.getPlots = function () {
        return this.polygonObj.getPaths();
    }
    this.getColor = function () {
        return this.getPolygonObj().fillColor;
    }
    this.setColor = function (color) {
        return this.getPolygonObj().setOptions({
            fillColor: color,
            strokeColor: color,
            strokeWeight: 2
        });
    }
    this.info = new Info(this, this.map);
    this.addListener = function () {
        var info = this.info;
        var thisPolygon = this.polygonObj;
        google.maps.event.addListener(thisPolygon, 'rightclick', function (event) {
            info.show(event.latLng);
        });
    }
    this.addListener();
}

function Info(polygon, map) {
    this.parent = polygon;
    this.map = map;
    this.color = document.createElement('input');
    this.button = document.createElement('input');
    $(this.button).attr('type', 'button');
    $(this.button).val("Change Color");
    var thisOjb = this;
    this.changeColor = function () {
        thisOjb.parent.setColor($(thisOjb.color).val());
    }
    this.getContent = function () {
        var content = document.createElement('div');
        $(this.color).val(this.parent.getColor());
        $(this.button).click(function () {
            thisObj.changeColor();
        });
        $(content).append(this.color);
        $(content).append(this.button);
        return content;
    }
    thisObj = this;
    this.infoWidObj = new google.maps.InfoWindow({
        content: thisObj.getContent()
    });
    this.show = function (latLng) {
        this.infoWidObj.setPosition(latLng);
        this.infoWidObj.open(this.map);
    }
    this.remove = function () {
        this.infoWidObj.close();
    }
}

2 个答案:

答案 0 :(得分:1)

button似乎只在最后一个函数Info中引用。所以我会说在该函数中注释掉它的5行(以及构成点击处理程序一部分的2条额外行)是安全的。

如果你只想隐藏用户的这个按钮,你可能只想在调用.hide()之后Info$('input[value="Change Color"]').hide(); 。这将是最不具侵入性的。

{{1}}

答案 1 :(得分:0)

    function PolygonCreator(map) {
    this.map = map;
    this.pen = new Pen(this.map);
    var thisOjb = this;
    this.event = google.maps.event.addListener(thisOjb.map, 'click', function (event) {
        thisOjb.pen.draw(event.latLng);
    });
    this.showData = function () {
        return this.pen.getData();
    }
    this.showColor = function () {
        return this.pen.getColor();
    }
    this.destroy = function () {
        this.pen.deleteMis();
        if (null != this.pen.polygon) {
            this.pen.polygon.remove();
        }
        google.maps.event.removeListener(this.event);
    }
}

function Pen(map) {
    this.map = map;
    this.listOfDots = new Array();
    this.polyline = null;
    this.polygon = null;
    this.currentDot = null;
    this.draw = function (latLng) {
        if (null != this.polygon) {
            alert('Click Reset to draw another');
        } else {
            if (this.currentDot != null && this.listOfDots.length > 1 && this.currentDot == this.listOfDots[0]) {
                this.drawPloygon(this.listOfDots);
            } else {
                if (null != this.polyline) {
                    this.polyline.remove();
                }
                var dot = new Dot(latLng, this.map, this);
                this.listOfDots.push(dot);
                if (this.listOfDots.length > 1) {
                    this.polyline = new Line(this.listOfDots, this.map);
                }
            }
        }
    }
    this.drawPloygon = function (listOfDots, color, des, id) {
        this.polygon = new Polygon(listOfDots, this.map, this, color, des, id);
        this.deleteMis();
    }
    this.deleteMis = function () {
        $.each(this.listOfDots, function (index, value) {
            value.remove();
        });
        this.listOfDots.length = 0;
        if (null != this.polyline) {
            this.polyline.remove();
            this.polyline = null;
        }
    }
    this.cancel = function () {
        if (null != this.polygon) {
            (this.polygon.remove());
        }
        this.polygon = null;
        this.deleteMis();
    }
    this.setCurrentDot = function (dot) {
        this.currentDot = dot;
    }
    this.getListOfDots = function () {
        return this.listOfDots;
    }
    this.getData = function () {
        if (this.polygon != null) {
            var data = "";
            var paths = this.polygon.getPlots();
            paths.getAt(0).forEach(function (value, index) {
                data += (value.toString());
            });
            return data;
        } else {
            return null;
        }
    }
    this.getColor = function () {
        if (this.polygon != null) {
            var color = this.polygon.getColor();
            return color;
        } else {
            return null;
        }
    }
}

function Dot(latLng, map, pen) {
    this.latLng = latLng;
    this.parent = pen;
    this.markerObj = new google.maps.Marker({
        position: this.latLng,
        map: map
    });
    this.addListener = function () {
        var parent = this.parent;
        var thisMarker = this.markerObj;
        var thisDot = this;
        google.maps.event.addListener(thisMarker, 'click', function () {
            parent.setCurrentDot(thisDot);
            parent.draw(thisMarker.getPosition());
        });
    }
    this.addListener();
    this.getLatLng = function () {
        return this.latLng;
    }
    this.getMarkerObj = function () {
        return this.markerObj;
    }
    this.remove = function () {
        this.markerObj.setMap(null);
    }
}

function Line(listOfDots, map) {
    this.listOfDots = listOfDots;
    this.map = map;
    this.coords = new Array();
    this.polylineObj = null;
    if (this.listOfDots.length > 1) {
        var thisObj = this;
        $.each(this.listOfDots, function (index, value) {
            thisObj.coords.push(value.getLatLng());
        });
        this.polylineObj = new google.maps.Polyline({
            path: this.coords,
            strokeColor: "#3333FF",
            strokeOpacity: 1.0,
            strokeWeight: 2,
            map: this.map
        });
    }
    this.remove = function () {
        this.polylineObj.setMap(null);
    }
}

function Polygon(listOfDots, map, pen, color) {
    this.listOfDots = listOfDots;
    this.map = map;
    this.coords = new Array();
    this.parent = pen;
    this.des = 'Hello';
    var thisObj = this;
    $.each(this.listOfDots, function (index, value) {
        thisObj.coords.push(value.getLatLng());
    });
    this.polygonObj = new google.maps.Polygon({
        paths: this.coords,
        strokeColor: "#3333FF",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#3333FF",
        fillOpacity: 0.35,
        map: this.map
    });
    this.remove = function () {
        this.info.remove();
        this.polygonObj.setMap(null);
    }
    this.getContent = function () {
        return this.des;
    }
    this.getPolygonObj = function () {
        return this.polygonObj;
    }
    this.getListOfDots = function () {
        return this.listOfDots;
    }
    this.getPlots = function () {
        return this.polygonObj.getPaths();
    }
    this.getColor = function () {
        return this.getPolygonObj().fillColor;
    }
    this.setColor = function (color) {
        return this.getPolygonObj().setOptions({
            fillColor: color,
            strokeColor: color,
            strokeWeight: 2
        });
    }
    this.info = new Info(this, this.map);
    this.addListener = function () {
        var info = this.info;
        var thisPolygon = this.polygonObj;
        //google.maps.event.addListener(thisPolygon, 'rightclick', function (event) {
          //  info.show(event.latLng);
        //});
    }
    this.addListener();
}

function Info(polygon, map) {
    this.parent = polygon;
    this.map = map;
    this.color = document.createElement('input');
    this.button = document.createElement('input');
    $(this.button).attr('type', 'button');
    $(this.button).val("Change Color");
    var thisOjb = this;
    this.changeColor = function () {
        thisOjb.parent.setColor($(thisOjb.color).val());
    }
    this.getContent = function () {
        var content = document.createElement('div');
        $(this.color).val(this.parent.getColor());
        //$(this.button).click(function () {
          //  thisObj.changeColor();
       // });
        $(content).append(this.color);
        $(content).append(this.button);
        return content;
    }
    thisObj = this;
    this.infoWidObj = new google.maps.InfoWindow({
        content: thisObj.getContent()
    });
    this.show = function (latLng) {
        this.infoWidObj.setPosition(latLng);
        this.infoWidObj.open(this.map);
    }
    this.remove = function () {
        this.infoWidObj.close();
    }
}

固定