document.write('<div id="divControlProvince" style="display: none;" class="dragDiv"><div id="divControlProvinceHeader" class="dragDivHeader"><span id="spanControlProvinceSelectResult" style="width:60px;border:solid:1px red;float:left;" ></span><span id="spanControlProvinceClose" style="float: right; margin-right: 20px; cursor: pointer;">关闭</span></div><br /><div id="divControlProvinceContent" class="divProvince"><ul id="ulControlProvince"><li>不限</li><li>广东省</li><li>北京</li><li>上海</li><li>重庆</li><li>天津</li><li>江苏</li><li>浙江</li><li>山东</li><li>辽宁</li><li>河北</li><li>河南</li><li>湖北</li><li>湖南</li><li>江西</li><li>安徽</li><li>内蒙古</li><li>吉林</li><li>黑龙江</li><li>山西</li><li>陕西</li><li>四川</li><li>云南</li><li>广西</li><li>青海</li><li>宁夏</li><li>福建</li><li>海南</li><li>贵州</li><li>西藏</li><li>新疆</li><li>甘肃</li><li>香港</li><li>澳门</li><li>台湾</li><li>国外</li></ul></div></div>');var provinceControl = function(resultid, btnid) {
    this.resultEle = this.g(resultid);
    this.btn = this.g(btnid);
    this.hiddendiv = this.insertHiddenDiv();
    this.divControlProvince = this.g("divControlProvince");
    this.Init();
}provinceControl.prototype = {
    g: function(id) {
        return typeof (id) == "string" ? document.getElementById(id) : id;
    },    insertHiddenDiv: function() {
        var o = this;
        var obj = o.g("divControlProvinceHiddenId");
        if (obj) {
            return obj;
        }
        else {
            $("body").append('<div id="divControlProvinceHiddenId" style="filter: alpha(opacity=30); -moz-opacity: 0.3; opacity: 0.3;  text-align: center; background-color: #000; z-index: 1000;position: absolute; display: none; overflow: hidden;"></div>');
            return o.g("divControlProvinceHiddenId");
        }
    },    Init: function() {
        var o = this;
        new dragLayerObj("divControlProvinceHeader");        $("#ulControlProvince").children().each(function(i, m) {
            $(m).bind("click", function() {
                $("#spanControlProvinceSelectResult").text($(this).text());
            });
        });        $(o.btn).bind("click", function(event) { o.ShowContent(event); });        $("#spanControlProvinceClose").bind("click", function() {
            // alert($(o.resultEle).attr("id"));
            //$(o.resultEle)[0].text($("#spanControlProvinceSelectResult").text());
            alert(o.resultEle.id);
            o.divControlProvince.style.display = "none";
            o.hiddendiv.style.display = "none";
        })        $(o.resultEle).bind("click", function() { $(this).text(""); });
    },    ShowContent: function(evt) {
        var o = this;
        var e = evt ? evt : window.event;
        var de;
        if (document.compatMode == "CSS1Compat") de = document.documentElement;
        else de = document.body;
        var pos = [e.clientX + de.scrollLeft, e.clientY + de.scrollTop];
        var hid = o.hiddendiv;
        o.showhid(hid);
        o.divControlProvince.style.left = (pos[0]) + "px";
        o.divControlProvince.style.top = (pos[1]) + "px";
        o.divControlProvince.style.display = o.divControlProvince.style.display == "none" ? "block" : "none";
        hid.style.display = o.divControlProvince.style.display;
    },    showhid: function(hid) {
        hid.style.left = 0 + "px";
        hid.style.top = 0 + "px";
        hid.style.width = window.screen.availWidth + "px";
        hid.style.height = (window.screen.availHeight + 200) + "px";
    }
}
    new provinceControl("spanloc_reg", "btnloc_reg");
    new provinceControl("spanloc_now", "btnloc_now");
new 了两个 对象
      $("#spanControlProvinceClose").bind("click", function() {
            // alert($(o.resultEle).attr("id"));
            //$(o.resultEle)[0].text($("#spanControlProvinceSelectResult").text());
            alert(o.resultEle.id);
            o.divControlProvince.style.display = "none";
            o.hiddendiv.style.display = "none";
      })
这是里面的一个函数。但是 alert(o.resultEle.id);会出现两次。
就是说“spanloc_reg”与"spanloc_now" 都放到o.resultEle里面啦。
请问应该怎样改?
这些不是每一个对象就有一个副本吗?
为什么是共用呢?

解决方案 »

  1.   

    我晕。。是事件绑定了两次
       $("#spanControlProvinceClose").bind("click", function() {
                // alert($(o.resultEle).attr("id"));
                //$(o.resultEle)[0].text($("#spanControlProvinceSelectResult").text());
                alert(o.resultEle.id);
                o.divControlProvince.style.display = "none";
                o.hiddendiv.style.display = "none";
            })
      

  2.   

    既然用了jquery,何必还要这个方法呢?
    g: function(id) {
            return typeof (id) == "string" ? document.getElementById(id) : id;
        },
      

  3.   

    回sky。
    因为我还是对dom的操作比较熟,对jq只能局部应用。以后我会尽量注意的。。谢谢