js new 一个对象出现的问题

jianshao810 2010-02-08 01:16:30

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里面啦。
请问应该怎样改?
这些不是每一个对象就有一个副本吗?
为什么是共用呢?

...全文
244 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianshao810 2010-02-08
  • 打赏
  • 举报
回复
回sky。
因为我还是对dom的操作比较熟,对jq只能局部应用。以后我会尽量注意的。。谢谢
changshoujun 2010-02-08
  • 打赏
  • 举报
回复
yingzhilian2008 2010-02-08
  • 打赏
  • 举报
回复
Up
sohighthesky 2010-02-08
  • 打赏
  • 举报
回复
既然用了jquery,何必还要这个方法呢?
g: function(id) {
return typeof (id) == "string" ? document.getElementById(id) : id;
},
qq373591361 2010-02-08
  • 打赏
  • 举报
回复
呵呵,原来是散分贴......
街头小贩 2010-02-08
  • 打赏
  • 举报
回复
LZ散分吧!
草根醉秋意 2010-02-08
  • 打赏
  • 举报
回复
不知尚能分否
itliyi 2010-02-08
  • 打赏
  • 举报
回复
lz解决了?jf
jianshao810 2010-02-08
  • 打赏
  • 举报
回复
我晕。。是事件绑定了两次。。。
$("#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";
})

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧