87,907
社区成员
发帖
与我相关
我的任务
分享
openDialog:function (Info, title,options,readyFn)
{
var html = new Array();
var id = "doc-modal_" + new Date().getTime();
html.push("<div class=\"am-modal am-modal-no-btn\" tabindex=\"-1\" id=\"" + id + "\">");
html.push('.....')
//这里就是往html添加一个对话框
var obj = $(html.join("")).appendTo("body");//追加到body
var btnObj = obj.find(".foot_dia");//找到那个跟部,添加那些按钮,按钮有事件
for (var i = 0; i < options.length; i++) {
//options是数组, [{id:'',bnText:'确定',handle:funtion(ob){},disabled:true}]
tmpBtn.push("<input ......... />");
__obj = $(tmpBtn.join("")).appendTo(btnObj)[0];//获得demo对象了
//从这里开始我就迷茫了,我要给每个按钮绑定事件
__obj.cHandle = options[i].handle;
//点击事件
$(__obj).click(function () {
$("#" + id).modal('close');
if (__obj.cHandle) {
__obj.cHandle(__obj);
}
});
//这样子写,不管哪个按钮都是获取到最后一个按钮的handle
}
}
$(__obj).click(function () {
if (options[i].handle) {
options[i].handle();
}
});
//这个就是那个闭包的问题了,i等于数组长度了,结果直接undefiine了
//完了之后,我用一个变量 接收 options[i].handle
var tmp = options[i].handle;
$(__obj).click(function () {
if (tmp) {
tmp();
}
});
//然后这个也是因为作用域的问题,tmp没有被消除,tmp一直被赋值,一直到循环最后一个
openDialog:function (Info, title,options,readyFn)
{
var html = new Array();
var id = "doc-modal_" + new Date().getTime();
html.push("<div class=\"am-modal am-modal-no-btn\" tabindex=\"-1\" id=\"" + id + "\">");
html.push('.....')
//这里就是往html添加一个对话框
var obj = $(html.join("")).appendTo("body");//追加到body
var btnObj = obj.find(".foot_dia");//找到那个跟部,添加那些按钮,按钮有事件
var tmpBtn = "<input ......... />";
for (var i = 0; i < options.length; i++) {
__obj = $(tmpBtn).appendTo(btnObj)[0];//获得demo对象了
//从这里开始我就迷茫了,我要给每个按钮绑定事件
__obj.cHandle = options[i].handle;
//点击事件
$(__obj).click(function () {
$("#" + id).modal('close');
if (this.cHandle) {
this.cHandle(this);
}
});
//这样子写,不管哪个按钮都是获取到最后一个按钮的handle
}
}
btnObj.find("#" + __id).click(function () {
alert($(this).prop('outerHTML'));
$("#" + id).modal('close');
if (_tmpHandle) {
_tmpHandle();
}
});
这个打印出来的,确实每一个按钮都不一样了,但是_tmpHandle还是最后一个
至于下面说的,那个I执行完之后,I是不会被释放的,你数组长度是5,那I就是5,那个是不是闭包我不懂,但是这个肯定是作用域的问题,因为click下面还在用I,所以I不会被释放
__obj.cHandle = options[i].handle;
(function(handle){
$(__obj).click(function () {
$("#" + id).modal('close');
if (handle) {
handle(__obj);
}
}
})(__obj.cHandle)