【发布时间】:2012-10-17 08:29:41
【问题描述】:
我刚刚注意到,当我的 javascript 调用 $(document).ready(function.... 因此,当我将依赖于 DOM 对象的代码放入准备好的文档中时,它并没有找到 DOM 对象。
Javascript
$(document).ready(function () {
$('input:radio,select').change(function () {
DO STUFF...
HTML 助手
@Html.RadioButtonList(m => m.ItemType, new SelectList(Model.ItemTypes, "Name", "Name")
另一个
@Html.DropDownListFor(n => n.ApartmentFloor, new SelectList(Model.ApartmentFloors, "Id", "Floor"), new { @id = "floorsSelect", @class = "exists" })
通常,单选按钮和下拉菜单应该有一个 .change 函数,但由于在添加 .change 时它们还没有呈现,所以它们没有得到那个函数。
有没有办法让“准备好 html 助手”而不是“准备好文档”?
编辑:
人们指出,HTML 助手在客户端开始渲染之前运行在服务器上,因此也应该在之前完成。情况似乎并非如此,因为当我“在文档就绪时”调试 JS 时,HTML 帮助器对象尚未呈现,但页面的其余部分已呈现。
所以问题仍然存在,有没有办法在 HTML 帮助器对象中添加“加载”功能,或者直接从具有剃刀语法的 cshtml 文件中添加“更改”功能?
【问题讨论】:
-
你的问题没有多大意义,因为助手是在服务器上执行的(之前响应被发送到客户端并且javascript可以运行)
-
..除非它是一个ajax加载的部分视图,并且脚本已经在页面中,是这样吗?
-
嗯,你说的听起来很合乎逻辑。但是,当我在 doucment.ready 中时,我尝试搜索一个 DOM 对象,但没有找到。所以由于某种原因,DOM 还没有完全呈现出来......
-
据我所知,它不是 Ajax 加载的局部视图。帮助程序位于一个 cshtml 文件中,然后由其 url 直接调用。
-
也许我的 RadioButtonList 有问题?我正在使用这个:pastebin.com/hTzY9vP5
标签: javascript asp.net-mvc razor document-ready