Backbone 视图中有多个 jQuery 对象

Multiple jQuery objects in Backbone view

我正在使用 JQuery 和 Backbone 构建网站,Chrome 中的最近更新似乎导致了一些奇怪的行为。这是我的 Backbone.js 视图 class:

var WebView = Backbone.View.extend({

    el: '#WebView',

    initialize: function() {
        ... // Do initialize actions

        // Arm the featured works link.
        this.$featuredWorks = $('a[href^="#"]').on('click',this.scrollTo);
    },

    scrollTo: function(e) {
        e.preventDefault();
        $(e.currentTarget.getAttribute('href')).ScrollTo();
    },
});

事实是,jQuery 对象在 View 对象内部和外部的工作方式不同。我导入了一个 jQuery 扩展,将 $.fn.ScrollTo 添加到 jQuery,但它只能从视图 之外的 访问,如下所示:

console.log($.fn.ScrollTo); // Returns the function.
var WebView = Backbone.View.extend({
    initialize: function() {
        console.log($.fn.ScrollTo); // Returns null.
    },
});

因此,要让 ScrollTo 在视图中工作,我必须执行以下操作:

var jq = jQuery;
var WebView = Backbone.View.extend({
    initialize: function() {
        console.log(jq.fn.ScrollTo); // This works. 
    },
});

有人知道为什么会这样吗?为什么似乎有 2 个单独的 jQuery 对象?此脚本通过 AJAX 和 运行 使用 $.parseHTML 加载。这与发生这种情况的原因有什么关系吗?

此问题已修复。事实证明,我在 HTML 模板文档中包含了两次 jQuery。第二个是延迟的,所以它在我所有其他脚本加载时加载。所以第 1 帧上的 jQuery 对象与之后的 jQuery 对象不同。