文档就绪没有点击页面加载,但它可以使用开发人员工具控制台

时间:2015-07-07 10:53:26

标签: javascript jquery ajax developer-tools

在Ajax Success上,INSERT INTO TABLE_2(DATE, O_WT) SELECT t1.F_DATE, (CASE WHEN SUM(CASE WHEN t1.F_NAME like 'ty%asd%' THEN t1.F_PKEY END) = 1 THEN 1 WHEN SUM(CASE WHEN t1.F_NAME like 'ty%asd%' THEN t1.F_PKEY END) = 2 THEN 2 WHEN SUM(CASE WHEN t1.F_NAME like 'ty%asd%' THEN t1.F_PKEY END) BETWEEN 3 AND 5 THEN 3 WHEN SUM(CASE WHEN t1. F_NAME like 'ty%asd%' THEN t1.F_PKEY END) > 5 THEN 5 ELSE 0 END) END AS O_WT FROM TABLE_1 t1 CROSS JOIN CLI_NAMES WHERE t1.F_NAME IN (SELECT I_NAME FROM I_WD WHERE I_I_ID IN (SELECT I_MAP_ID FROM T_T_MAP WHERE T_MAP_ID = (SELECT T_ID FROM TWD WHERE T_NAME = 'abc' ) ) ) AND t1.F_DATE between '2015-05-01' and '2015-06-01' AND t1.F_NAME LIKE 'ty%pr%' GROUP BY t1.F_DATE 元素附加到li

ul

它创造了这样的东西:

$.ajax({
           ..
     success: function (response) {
         response.data.forEach(function (x) {
            $("#ulMain").append('<li class="liSub">' + x + '</li>');
     }
});

我希望动态添加的<ul> <li class="liSub">ABC</li> <li class="liSub">BCF</li> </ul> 元素在点击时触发警告框。 但是下面的代码没有被击中。

li

有趣的是,如果我使用F12 - Console运行代码的$(document).ready(function () { $(".liSub").on("click", function () { alert("Fired"); }); }); 部分,它可以工作。什么阻止它正常运行,让它通过控制台运行?

3 个答案:

答案 0 :(得分:2)

您错过了.课程的前缀,并使用事件分段来创建动态dom元素

$("ul").on("click", '.liSub', function () {
     alert("Fired");
});

答案 1 :(得分:1)

由于它是动态加载的元素,请尝试委派它:

$(document).ready(function () {
    $("body").on("click",".liSub", function () {
        alert("Fired");
    });
});

答案 2 :(得分:1)

这是因为当您的页面准备就绪时,ajax调用尚未完成。你可以试试这个:

$(document).ready(function () {
    $("#ulMain").on("click",".liSub", function () {
        alert("Fired");
    });
});

它会将点击绑定到执行时存在的#ulMain,并在点击时将事件委托给.liSub。它只创建一个绑定,这对全局性能也更好。