Это было исправлено. Оказывается, я дважды включил jQuery в свой шаблонный документ HTML. Второй откладывается, поэтому он загружается, когда загружаются все остальные мои скрипты. Таким образом, объект jQuery в кадре 1 отличается от объектов jQuery после этого.

ользую JQuery и Backbone для создания веб-сайта, и кажется, что недавнее обновление в Chrome вызвало странное поведение. Вот мой класс представления Backbone.js:

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 работать внутри View, мне нужно сделать следующее:

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

Кто-нибудь знает, почему это так? Почему, кажется, есть 2 отдельных объекта jQuery? Этот скрипт загружается через AJAX и запускается с использованием$.parseHTML, Это как-то связано с тем, почему это происходит?

Ответы на вопрос(1)

Ваш ответ на вопрос