【发布时间】:2015-07-31 17:46:16
【问题描述】:
我正在从列表中生成元素,每个元素都会有一个点击事件。 这都在同一个局部视图中,每经过 X 秒刷新一次。
第一次初始加载不起作用。每次自动刷新局部后都可以正常工作。
所有(文档).ready 事件触发。
点击事件之外的其他代码触发就好了。
循环显示
<div id="@overview.GroupType.Name" class="tile @overview.AlertType.MetroBG ui-widget-content draggable" data-role="tile" style="z-index: 2;">
<div class="tile-content iconic" style="z-index: 2;">
<span class="icon @overview.AlertType.MetroImage @overview.AlertType.MetroFG"></span>
<span class="tile-badge @overview.AlertType.MetroBadgeBG @overview.AlertType.MetroBadgeFG">@overview.BadgeCount.ToString()</span>
<span class="tile-label no-padding fg-white">@overview.GroupType.Description</span>
</div>
</div>
(document).ready 的脚本部分中的循环生成以下内容
$('#@overview.GroupType.Name').on("click", function () {
alert('click');
$.ajax({
type: 'GET',
url: '@Url.Action("LoadDetail", "Home")',
dataType: 'html',
data: { 'groupName': '@overview.GroupType.Name' },
async: true,
cache: false,
success: function (data) {
$("#monitorDetail").html(data);
},
error: function (xhr, status) {
}
})
});
我读了几篇文章说你必须使用 .on("click" ...) 所以我不知道还有什么要研究的。
【问题讨论】:
-
您应该在 partilview 加载后调用它,使用 Success 函数。
-
@Fals 因为控制器正在将所需的模型传递给视图,在加载第一个视图后,我是否必须调用具有相同模型的另一个视图来生成点击事件?由于所有代码都在同一个视图中并且正在自动刷新,为什么这在第二次尝试而不是第一次初始加载时有效?
-
您在主视图加载后渲染内容。渲染每个局部视图后,您必须调用将任何内容绑定到新 DOM 的函数
-
@Tsukasa 那个 div 是动态元素吗?
-
@Fals 控制器传递给局部视图的模型包含生成代码的数据。您是说在加载有问题的部分后从主视图中我需要生成 jQuery 事件吗?这意味着我需要让我的主视图保存部分模型以在之后加载事件?
标签: javascript jquery razor model-view-controller