在MVC3中创建动态jQuery选择器

时间:2013-05-05 13:50:18

标签: jquery asp.net-mvc-3

这看起来很奇怪,很可能是某个PEBKAC ...我正在尝试创建一个jQuery函数,它通过Id作用于页面元素,其中Id由MVC3站点中的模型填充。

我有一个使用Ajax post back helper的表单,如下所示:

               <div id="rsvp_@(Model.Meeting.Id)" class="rsvp">
                           <text>You coming or what?</text>
                           using (Ajax.BeginForm("Rsvp", "Member", new AjaxOptions() { InsertionMode = InsertionMode.Replace, UpdateTargetId = "meeting_" + Model.Meeting.Id, OnBegin = "TryRsvp();", OnSuccess = "DidRsvp();", OnFailure = "FailRsvp();"}))
                           {
                               @Html.HiddenFor(m => m.CurrentUser.Id);
                               @Html.HiddenFor(m => m.Meeting.Id);
                               <input type="submit" name="btnSubmit" value="Yes!" />
                               <input type="submit" name="btnSubmit" value="No" />
                           }
                 </div>

当调用其中一个提交按钮时,TryRsvp()的javascript会触发:

function TryRsvp() {
    alert('trying to rsvp');
    $('#rsvp_@(Model.Meeting.Id)').toggle();      
    alert('did script');  
}

我收到两个警报 - 但切换不起作用。

我查看了输出的代码,该行看起来像这样:

    $('#rsvp_323e52cc-3058-4bfd-9a4f-0cb9653ebe99').toggle();

看起来是正确的。

奇怪 - 如果我对该行进行硬编码(即我使用firebug查找生成的脚本,然后将其直接复制并粘贴到页面上),那么它可以正常工作。但是,当MVC3动态生成时它会失败 - 尽管我已经看到,生成的javascript是相同的。

这里发生了什么?有什么关于MVC3提供页面的方式以及会在这里产生影响的脚本吗?

任何线索都赞赏

1 个答案:

答案 0 :(得分:0)

查看代码,您可能已将TryRsvp()添加到主页面,这不起作用,因为在解析函数时该元素不会存在于DOM中。

您需要指定类或输出函数以及表单。