Jquery 插入把手模板后无法对其进行操作

Jquery 插入把手模板后无法对其进行操作,jquery,handlebars.js,Jquery,Handlebars.js,这可能是一个noob问题,但: 我构建了一个测试,然后决定用Handlebar模板加载我的所有问题,问题是在模板插入到位后,我无法用jquery或其他任何东西操作dom。这是我的车把功能: mQ.loadQuestion = function () { "use strict"; Handlebars.registerHelper("fill", function (data, options) { return options.fn(data[mQ.counte

这可能是一个noob问题,但:

我构建了一个测试,然后决定用Handlebar模板加载我的所有问题,问题是在模板插入到位后,我无法用jquery或其他任何东西操作dom。这是我的车把功能:

mQ.loadQuestion = function () {
    "use strict";
    Handlebars.registerHelper("fill", function (data, options) {
        return options.fn(data[mQ.counter]);
    });
    $('#questions').remove();
    $('#answersFrame').remove();
    var templateScript = $('#fillQuestions').html(),
        theTemplate = Handlebars.compile(templateScript);
    $.getJSON("quiz.json", function (quiz) {
    $('#next').before(theTemplate(quiz));
    });
};
好的,我用这个函数修改问题,问题修改得很好,测验工作得很好,但是在插入新的html模板之后,它就好像所有的类和id都消失了,例如,在我调用Handlebar函数并尝试操作dom之后,什么都没有发生。例如:

mQ.loadQuestion();
    $('.choices').show('slow');

这里的“选项”是html模板中的一个类名,但在调用Handlebar函数后,我无法再选择和操作新加载的html,也就是说,如果选项的显示为无,我无法缓慢显示,或者如果我想选择一个输入收音机,我无法执行,就像加载模板后dom停止工作一样。例如,如果模板加载空的单选按钮,并且我希望在加载模板后选择其中一个,则我无法执行此操作。希望我把问题说清楚。谢谢。

在DOM中实现的handlebar模板HTML与其他HTML一样,可以编辑

没有例子很难得到准确的答案。但是,模板是在getJSON调用之后注入的。这是一个AJAX调用(异步),因此,如果您立即查询“.choices”,它将不会在DOM中找到它,因为AJAX调用尚未完成,并且没有注入Handlebar模板。尝试将fadeIn调用放在AJAX回调中,例如:

mQ.loadQuestion = function () {
    "use strict";
    Handlebars.registerHelper("fill", function (data, options) {
        return options.fn(data[mQ.counter]);
    });
    $('#questions').remove();
    $('#answersFrame').remove();
    var templateScript = $('#fillQuestions').html(),
        theTemplate = Handlebars.compile(templateScript);
    $.getJSON("quiz.json", function (quiz) {
        //JSON Callback. Will call this function and the run the code
        //Below once the JSON is available.
        $('#next').before(theTemplate(quiz));
        $('.choices').show('slow');
    });
};

谢谢,这是有效的,但是,它也有效,例如,如果我在尝试编辑任何内容之前发出警报,我想ajax调用还有时间完成,但我的问题是,你说ajaxs调用没有完成,但模板仍然正确地使用json对象,并将正确的键放在正确的位置,如果ajax调用没有完成,它怎么能做到这一点呢?一个警报会停止代码,并为ajax调用的完成留出时间。该模板之所以有效,是因为该模板是在getJSON回调中呈现的,因此在该点上数据是可用的。记住,AJAX调用就像加载另一个页面;网页不会立即加载,AJAX调用也不会。Javascript不会在继续之前等待AJAX调用完成,这就是为什么必须使用回调。