Javascript MVC Razor HTML帮助程序在$(document).ready时未呈现(

Javascript MVC Razor HTML帮助程序在$(document).ready时未呈现(,javascript,asp.net-mvc,razor,document-ready,Javascript,Asp.net Mvc,Razor,Document Ready,我刚刚注意到,当我的javascript调用$(document).ready(function…)时,我的MVC Razor HTML帮助程序没有呈现(在DOM中)。。。。 因此,当我将依赖于DOM对象的代码放入文档准备就绪时,它找不到DOM对象 Javascript $(document).ready(function () { $('input:radio,select').change(function () { DO STUFF... HTML助手 @Html

我刚刚注意到,当我的javascript调用$(document).ready(function…)时,我的MVC Razor HTML帮助程序没有呈现(在DOM中)。。。。 因此,当我将依赖于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“on document ready”时,HTML帮助程序对象尚未呈现,但页面的其余部分已呈现


因此问题仍然存在,有没有办法在HTML helper对象中添加“加载”函数,或者直接从cshtml文件中使用razor语法添加“更改”函数?

尝试这样注册事件

      $('input:radio,select').on("change" ,function () { }) ;

希望这会有所帮助。

我意识到我从未发布过解决问题的方法。 尽管有人指出HTML助手应该在文档准备就绪之前呈现,但我的情况似乎并非如此。 因此,我所做的是直接在HTML助手上添加事件处理程序:

@Html.RadioButtonList(m=>m.MyObject,新选择列表(Model.MyObjects,“Name”,“Name”),“inputChangeHandler($(this));”)


Works great=)

您的问题没有多大意义,因为帮助程序是在服务器上执行的(在将响应发送到客户端并运行javascript之前)…除非它是一个加载了ajax的部分视图,并且脚本已经在页面中,是这样吗?嗯,你说的听起来很合乎逻辑。但是,我仍然尝试在doucment.ready中搜索DOM对象,但没有找到。因此,由于某些原因,DOM还没有完全呈现…据我所知,它不是一个加载了ajax的部分视图。助手s在一个cshtml文件中,然后由它的url直接调用。也许我的RadioButtonList有问题?我使用这个:另外,我注意到cshtml文件中包含的JS的位置改变了页面的行为。如果我将准备好文档的JS放在HTML帮助器之上,HTML帮助器就不会在文档r上呈现准备好了。但是如果我把JS放在下面,它们会被渲染…奇怪,我认为把JS放在文件的顶部或底部并不重要。。