【问题标题】:trigger jquery from ajax loaded partial view in mvc3在 mvc3 中从 ajax 加载的部分视图触发 jquery
【发布时间】:2011-08-28 19:58:38
【问题描述】:

我正在使用 ajax 将部分视图加载到主视图中,但努力让 jquery 在部分视图中触发。

基本上,我试图允许加载包含允许我打开对话框窗口的按钮的局部视图。

我的局部视图包含这一小块js

    <script type="text/javascript">
    $(document).ready(function () {
        alert('ready');
        $('#edit-note').click(function () {
            //$('#dialog').dialog('open');
            alert("alert displayed from jquery");
        });
    }); 

</script>

但是它永远不会被解雇。

我需要做什么才能让 jquery 从动态加载的局部视图中工作?

【问题讨论】:

  • 您向我们展示的那段代码在哪里?是在主视图中,还是在局部视图中?

标签: jquery asp.net-mvc-3


【解决方案1】:

$('#edit-note').click(function () { 开头的代码在文档准备就绪时运行。在那个时间点,你还没有加载你的局部视图,所以$('#edit-note') 是一个空集合。

jQuery 允许您通过其live 方法将事件绑定到页面上尚未出现的元素:

$('#edit-note').live('click', function () {
    alert("alert displayed from jquery");
});

【讨论】:

  • 您好 Joseph,我在部分视图中有上述代码,它是动态加载的,而不是实际页面。理想情况下,我不希望在实际页面中使用上述代码,我希望将其保留在加载的局部视图中。
    我尝试了你的建议,但它没有被触发。
  • @Diver Dan:你把它包裹在$(document).ready 中了吗?你不应该。由于您使用的是live,因此不需要$(document).ready
  • 您的权利。我将所有内容从实际页面移到一个全局 js 文件中,一切都很好。谢谢
【解决方案2】:

您可以做的另一件事是使用@Ajax.ActionLink 并在 AjaxOptions 中使用 OnSuccess 事件调用 JavaScript 函数,该函数执行您尝试执行的 JQuery。即。

@Ajax.ActionLink("Create New", "Create", "Employee", new AjaxOptions()
{
UpdateTargetId = "divAction",
InsertionMode = InsertionMode.Replace,
HttpMethod = "GET",
OnSuccess = "createNew_Success"
}, new { id = "btnAdd", @class = "newButton", OnClick = "$('#divAction').slideDown();" })

然后在你的 Javascript 中:

<script type="text/javascript">
function createNew_Success() {
$('.button').button();
}
</script>

它的作用是将 PartialView 加载到 div 中,并在加载成功后,将 JQuery 样式应用于具有按钮类的对象

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多