2

完整样本在这里

我有一个非常简单的主干 js 结构。

    var Step1View = Backbone.View.extend({
    el:'.page',
    render:function () {
        var template = _.template($('#step1-template').html());
        this.$el.html(template);

    }
});

var step1View = new Step1View();
var Router = Backbone.Router.extend({
    routes:{
        "":"home"
    }
});

var router = new Router;
router.on('route:home', function () {
    step1View.render();
})
Backbone.history.start();

这很好用,但是我无法调用这个简单的 jquery 函数。

$(document).ready(function() { $('.tip').tooltip(); });

更新

小学生错误在这里。jquery onload 函数需要放在路由中。我对骨干很陌生,所以我不确定这是否是最佳做法。但以下工作。

            render:function () {

            var that = this;
            var savings = new Savings();
            savings.fetch({
                success:function () {
                    var template = _.template($('#step3-template').html(), {savings:savings.models});
                    that.$el.html(template);
// put your jquery good ness here
                    $('.tip').tooltip();
                    $(".step3-form").validate();
                }
            })

        }
4

2 回答 2

2

看起来你找到了答案!只是想分享一下,您可以通过这样做来缩小 jQuery 的范围。

        savings.fetch({
            success:function () {
                var template = _.template($('#step3-template').html(), {savings:savings.models});
                that.$el.html(template);
                that.$el.find('.tip').tooltip();
                that.$el.find(".step3-form").validate();
            }

您在示例中的内容有效,但它每次都会扫描整个文档以查找 HTML 类tip,您可以使用您刚刚创建的元素向下扫描您刚刚在其中创建的提示。轻微优化。

希望这有帮助!

于 2012-12-18T21:11:39.533 回答
0

看起来你找到了答案!只是想分享一下,您可以通过这样做来缩小 jQuery 的范围。

    savings.fetch({
        success:function () {
            var template = _.template($('#step3-template').html(), {savings:savings.models});
            that.$el.html(template);
            that.$el.find('.tip').tooltip();
            that.$el.find(".step3-form").validate();
        }

您在示例中所拥有的内容有效,但它每次也使用类提示扫描整个文档以查找 HTML,您可以使用刚刚创建的元素向下扫描仅针对您刚刚在其中创建的提示。轻微优化。

希望这有帮助!

于 2020-04-28T19:44:14.280 回答