我在弹出窗口中显示了一个Ajax窗体,并显示了覆盖。我通过ajax提交弹出窗口,如果ajax调用已成功,我需要关闭覆盖。Asp.Net MVC/jQuery工具覆盖:如何在ajax中关闭它返回
这是目前我的JS代码:
<script type="text/javascript">
$(function() {
// Handle form submit ...
$("#AddVariableForm").live("submit", function (event) {
event.preventDefault();
var form = $(this);
$.validator.unobtrusive.parse('#AddVariableForm');
$.ajax({
url: form.attr('action'),
type: "POST",
data: form.serialize(),
success: function (data) {
if(data.Success){
$("#adm-form-addVariable").data("overlay").close();
}
},
error: function (jqXhr, textStatus, errorThrown) {
alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')");
},
complete: function() {
alert('complete');
}
});
return false;
});
});
</script>
的问题是,它目前还没有任何关闭。我再次使用chrome调试模式进行检查,它在方法中,但不做任何事情。我也检查过,没有JS错误。
我试图做
$("#adm-form-addVariable").overlay({ api: true }).close()
,但同样的问题。
这是我如何把它声明:
$(".adm-btn-overlay-trigger[rel]").overlay(
{
mask: {
color: '#111',
loadSpeed: 300,
opacity: 0.9
},
closeOnClick: true
}
);
如果我这样做:。
$( “#ADM外形addVariable”)覆盖({API:真})。 isOpened()
我得到一个未定义的。
我在做什么错?
我试着和它的作品。我试图理解为什么?不是[rel]属性访问器?这是一个xpath表达式吧?这也许可以解释为什么我以前不明白。 PS:多么惊人的工具jsfiddle是!我以前不知道!不要犹豫,转发我这种工具:)巨大的风扇:) – J4N 2012-02-28 07:03:41
jQuery表达式基本上说:“具有rel属性的class .adm-btn-overlay-trigger的元素”。 jquery工具似乎存储了与触发器有关的叠加信息,而不是叠加元素本身。这是一个设计选择。顺便说一句,我的初始解决方案不适用于多个触发器,因为$(“。adm-btn-overlay-trigger [rel]”)可以返回多个结果。我用一个可行的解决方案更新了我的答案。 – 2012-02-28 07:20:21
哦,我刚刚在SO上了解到jsfiddler。确实是一个不错的工具 – 2012-02-28 07:21:02