问题描述
|
我似乎无法使用jquery引用DOM中的项目。
如何在OnBegin / OnSuccess事件期间显示/隐藏元素?
如何添加/删除CSS类?
解决方法
您可能正在使用类似:
<% using(Ajax.BeginForm(\"UpdateForm\",new AjaxOptions{ OnBegin = \"showIt\",OnSuccess = \"hideIt\" })) { %>
...
<% } %>
OnBegin
和OnSuccess
是在可见的Ajax请求阶段将调用的全局可见javascript函数的名称。这些功能应满足您的要求:
function showIt() {
// show and add a class on the same element
$(\"#SomeElementID\").show().addClass(\"some-class\");
}
function hideIt() {
// hide and remove class on the same element
$(\"#SomeElementID\").hide().removeClass(\"some-class\");
}
我不确定函数参数,因为:
我从未使用过此功能-我只使用HtmlHelper
扩展方法并编写自定义jQuery脚本来执行Ajax请求和所有此类处理;从我的角度来看,不好的部分之一是那些全局函数,如果没有明确需要,通常可以更好地避免它们;我还怀疑Asp.net MVC Ajax应用程序很少使用这种方法,它们通常使用HtmlHelper
扩展名并使用jQuery手动控制Ajax处理。
Microsoft文档非常稀缺,并且不讨论函数参数(或与此有关的调用上下文)
除了使用全局函数,您还可以内联编写匿名函数(这样做不好,因为所有内容都以字符串形式塞在一行中,但可以正常工作):
... OnBegin = \"function() { $(\\\"#SomeElementID\\\").show().addClass(\\\"some-class\\\"); }\" ...
所以告诉我是否可行。
,隐藏东西:
$.ajax( //whatever
success: function() { $(\'.classToShow\').show(); }
)
删除类别:
$.ajax( //whatever
success: function() { $(\'#hideSomething\').removeClass(\'aClass\'); }
//addClass to add
)
OnBegin?
您是指发送前
$.ajax( //whatever
beforeSend: function() { $(\'#hideSomething\').removeClass(\'aClass\'); }
//addClass to add
)
您确定引用的是jquery而不是msajax吗?