Javascript jQuery。如何选择活动创建的元素?

Javascript jQuery。如何选择活动创建的元素?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,代码如下: helpers.ajaxModuleFormRequest('blockcallback', $(this), function() { var timer = $('[data-timer]'); var seconds = timer.data('timer'); var interval = setInterval(function() { if (seconds == 0) {

代码如下:

    helpers.ajaxModuleFormRequest('blockcallback', $(this), function() {
        var timer = $('[data-timer]');
        var seconds = timer.data('timer');

        var interval = setInterval(function() {
            if (seconds == 0) {
                clearInterval(interval);
            }
            timer.text(seconds);
            seconds--;
        }, 1000);
    });
ajaxModuleFormRequest()执行一个AJAX请求,然后在$.AJAX.done()方法中调用第三个参数中指定的回调函数


插入DOM live$.ajax.done()方法中,我想选择它来启动计时器。但是代码不起作用,
$(“[data timer]”)。length
返回0。如何解决此问题?

下面是一个简化的示例,它动态插入一个
,然后启动计时器:

Html:

<html>
<head>Testpage</head>
<body></body>
</html>
{
    $('body').append('<div data-timer="20"></div>');
    var timer = $('[data-timer]');
    var seconds = timer.data('timer');
    if (seconds!==undefined)
    {
        alert(seconds);
        var interval = setInterval(function() {
            if (seconds == 0) {
                alert('elapsed!');
                clearInterval(interval);
            }
            timer.text(seconds);
            seconds--;
        }, 1000);
    }
    else
    {
        alert("Please specify a timer value!");
    }
}

测试页
JavaScript:

<html>
<head>Testpage</head>
<body></body>
</html>
{
    $('body').append('<div data-timer="20"></div>');
    var timer = $('[data-timer]');
    var seconds = timer.data('timer');
    if (seconds!==undefined)
    {
        alert(seconds);
        var interval = setInterval(function() {
            if (seconds == 0) {
                alert('elapsed!');
                clearInterval(interval);
            }
            timer.text(seconds);
            seconds--;
        }, 1000);
    }
    else
    {
        alert("Please specify a timer value!");
    }
}
{
$('body')。追加('');
变量计时器=$(“[数据计时器]”);
var seconds=timer.data('timer');
如果(秒!==未定义)
{
警报(秒);
var interval=setInterval(函数(){
如果(秒==0){
警报(“已过!”);
间隔时间;
}
定时器文本(秒);
秒--;
}, 1000);
}
其他的
{
警报(“请指定计时器值!”);
}
}
请注意,最初不存在
,而是通过

$('body').append('<div data-timer="20"></div>');
$('body')。追加(“”);
如果您想测试它是否正确测试计时器值的存在,请注释上面的行,即

// $('body').append('<div data-timer="20"></div>');
/$('body')。附加(“”);
您将收到警告消息“请指定一个计时器值!”

在JSFIDLE上试用:

{
$('body')。追加('');
变量计时器=$(“[数据计时器]”);
var seconds=timer.data('timer');
如果(秒!==未定义)
{
警报(秒);
var interval=setInterval(函数(){
如果(秒==0){
警报(“已过!”);
间隔时间;
}
定时器文本(秒);
秒--;
}, 1000);
}
其他的
{
警报(“请指定计时器值!”);
}
}
Testpage

类似的问题要理解这个问题,我们需要更多地了解您是如何操作div的。我已经用您的代码创建了div,它工作正常。页面加载时DOM中没有div。它是在AJAX请求后插入DOM的。