$(document).ready侦听器未在动态内容上运行

gfr*_*one 1 javascript jquery action listener

我有一个$(document).ready为某些元素设置监听器的函数.但是,所有#leave-ride元素都是动态添加的.

听众:

$(document).ready(function() {
    $("#post-ride").click(function() {
        addRide(currentDriver, $(destinationInput).val(), $(originInput).val(), $(dateInput).val(), $(timeInput).val());
        $.getScript("scripts/myRides.js", function() {});
    });

    $("#request-ride").click(function() {
        requestRide(currentDriver, $(destinationInput).val(), $(originInput).val(), $(dateInput).val(), $(timeInput).val());
        $.getScript("scripts/myRides.js", function() {});
    });

    $("#leave-ride").click(function() {
        console.log("leave Ride");
        leaveRide(currentDriver, $("leave-ride").closest("div").attr("id"));
        $.getScript("scripts/myRides.js", function() {});
    });
});
Run Code Online (Sandbox Code Playgroud)

我需要做些什么才能让听众听取动态内容?

Ber*_*rgi 9

是的,ready只运行一次.您可以使用事件委派:

取最接近#leave-ride未动态加载的元素(document在极端情况下).然后在其上附加处理程序,并#leave-ride用作委派事件的选择器.

假设一个具有id的div #container是那个静态元素:

$('div#container').on('click', '#leave-ride', function(){…});
Run Code Online (Sandbox Code Playgroud)

另请参见动态创建元素的事件绑定?