Ajax html表追加不识别jQuery

时间:2018-01-04 21:21:23

标签: jquery ajax model-view-controller

当我选择一个表行时,我试图输出一条消息,HTML表体正在我的控制器中构建,然后通过Ajax将其附加到视图中的表中。正在按预期构建数据,但是当我点击表格行时,没有任何反应。

即使我在clickable中设置了<tr>类,但当它被附加到视图时,某些内容似乎会在翻译中丢失。在chrome中,我可以执行一个inspect元素,并且可以看到该表具有clickable类。作为一个健全性测试,我在视图中硬编码了一个调用相同jQuery函数的虚拟表。像魅力一样。

为什么在我的Controller中构造表体时,消息不会被执行?

控制器

var t = "";  

foreach (var item in associateResults.monthly_hierarchy)
{
    t += @"<tr class=""clickable"">";
    t += "<td>" + item.AgentName + "</td>";
    t += "<td>" + item.AgentSSOn + "</td>";
    t += "<td>" + item.Site + "</td>";
    t += "<td>" + item.BusGroup + "</td>";
    t += "<td>" + item.MgrName + "</td>";
    t += "</tr>";
}

return Content(t);

的jQuery

jQuery(document).ready(function($) {
  $(".clickable").click(function() {
     alert("hello")
  });
});

1 个答案:

答案 0 :(得分:1)

您的问题表明该表已加载ajax。这意味着页面加载时不存在元素。因此,您在文档中的绑定将找不到要绑定的任何元素。您需要在创建字段后执行绑定,或者更优选地,创建在创建字段时不关心的委托绑定。

jQuery(document).ready(function($) {
    $(selectorForTable).on("click", ".clickable", function() {
        alert("hello")
    });
});

这样做会在表上放置一个click事件处理程序,它在页面加载时确实存在。它会侦听来自任何子元素的click事件,如果它们与childSelector匹配(&#34; .clickable&#34;在这种情况下),它将执行逻辑。