使用JS / jQuery编写一小段代码时遇到了一个大问题(不知道哪一个导致了这个问题)。无论如何,我们走了:
$('#themePicker').unbind().click(function() {
var t = $(this);
modalwindow2(t, function() {
console.log(1);
}, function(w) {
console.log(w);
});
return false;
});
和函数本身:
function modalwindow2(w, callbackOnSHow, callbackOnHide) {
if (typeof(callbackOnSHow) == 'function') {
callbackOnSHow.call();
}
// do some stuff //
$('form').submit(function() {
ajaxSubmit(function(data) {
if (typeof(callbackOnHide) == 'function') {
console.log('---------------');
console.log(data);
console.log('---------------');
callbackOnHide.call(data);
}
});
return false
});
}
该函数被称为modalwindow2
,我想在显示模态时调用函数,而在隐藏模态时调用另一个函数。
第一个不是问题。
第二......好吧......我们只是说这是一个问题。为什么呢?
我想要一个参数发送到第二个函数。参数是一个ajax响应,类似于其他jQuery的东西(ajax动作,可排序等)。
我希望自己足够清楚。
谢谢!
编辑:
我正在使用jQuery 1.1.2(或1.1.3),升级或使用jQuery UI不是一个解决方案。我有一些依赖(接口是其中之一),我没有足够的时间(也没有动力)升级到1.3& UI 1.7。
答案 0 :(得分:1)
我理解你要做的是什么,但你需要存储新创建的窗口,以便你可以在关闭的回调函数上访问它。
您可能需要查看jQuery UI Dialog。它为对话框窗口(模态和其他)提供了一些非常基本的功能,并处理了一些回调实现。
答案 1 :(得分:1)
我注意到你有一个拼写错误.submit: 的 $( '形式')。submti(函数(){强>
这只是SO的输入错误吗?
编辑: 好的,所以看了你的代码并做了一个简短的测试后,我想出了这个(原谅双关语):
function modalwindow2(w, callbackOnShow, callbackOnHide) {
if(typeof callbackOnShow == 'function') {
callbackOnShow.call();
}
$('form').submit(function() {
if(typeof callbackOnHide == 'function') {
callbackOnHide.call(this, "second");
}
});
}
$(document).ready(function (){
$('#themePicker').click(function(){
var t=$(this);
modalwindow2(t, function() { alert("first"); }, function(x) { alert(x); });
return false;
});
});
看起来你可能刚刚错过了call()语句中的“this”。尝试使用callbackOnHide.call(this,data);
让我知道这是否更好!