在我选择的方法在JavaScript中完成执行后,我该如何将事件连接到触发器
How do can I wire up an event to trigger after methods of my choosing finish execution in JavaScript?
很难用一个问题来概括,但以下是详细信息:
我有一个ASP.NET MVC 3项目(实际上有很多)。
我的标准做法是,每个视图都有一个Init()
方法,该方法在文档准备就绪时激发。这是我放置所有UI代码的地方,比如渲染按钮和手风琴等。
我使用的技巧是通过将html
标记设置为display: none
来隐藏未格式化的html元素,在Init()
完成后,我可以取消隐藏所有内容。
这工作得很好,但我最初在布局页面中显示内容,但这将在视图的Init代码完成运行之前执行。如果我将部分视图与它们自己的Javascript一起使用,它会变得更加复杂。
我想在一个地方附加一个回调,在我所有可能的Init()
调用完成后触发。
我尝试使用自定义事件,但之后我必须在每个Init方法结束时触发它们,这不是很有效。
请求代码:
布局页面
<script>
$("html").addClass('init') // init has display: none
$(function() {
InitLayout() // Basic stuff for every page like menu, buttons, etc
$("html").removeClass('init'); // show all content
});
</script>
查看页面
<script>
$(function() {
ViewInit() // Init all custom ui elements on page: tabs, accordions, etc
});
</script>
问题是removeClass
将在每个页面的Init
激发之前出现。我正试图找到一种方法来避免在每个Init
方法的底部都有removeClass
调用。是否有某种方法可以通过编程方式附加回调以避免重复代码。我在这里的主要目标是实现未格式化内容的隐藏,直到全局完成所有内容,这样我就不必在每个视图中担心它了。
您可以尝试将init过程的出现注册到全局变量(数组)中。这应该在document.ready()或等效的JQuery之外完成。所以在<script>
标签中。
当您的Init函数在document.ready()事件处理程序或其等效JQuery中完成时,请注销该事件。
在注销时,请检查是否有剩余的事件,如果没有,请修改您的html样式。
在这种情况下,脚本解析和DOM实际完成加载之间的差距可能对您有用。
- 每次只在第一个上单击事件触发器
- 2个Analytics帐户中的Google Analytics事件触发器跟踪
- jQuery 可排序事件触发器
- 使用 Hammer.js 的程序化事件触发器
- Javascript/AngularJS:如何使点击事件触发器成为父级
- jQuery特定的事件触发器
- Unity 3d事件触发器将gameobject.active设置为false
- 上的jquery inputmask事件触发器未完成
- 如何在PlayN中添加对自定义JavaScript事件触发器的支持
- dom对象创建javascript和jquery后的事件触发器
- google将v3事件触发器映射到json创建的标记上
- 通过事件触发器/按钮单击将参数传递给 javascript 函数
- 自定义打印功能,打印内容未显示在第一个事件触发器上
- 如何使用带有复选框的事件触发器访问 ID 数组
- 如何使用事件触发器和自定义属性获取元素的子元素
- 如何在使用循环时调用 jquery 事件触发器
- IE 中浮点和内联块元素的 focusin 事件触发器
- 页面中的 Angularjs-Accordion 事件触发器
- JS切换事件触发器无法正常工作
- 使用事件触发器如何在输入更改时将值传递给函数