在 Optimizely 中,我尝试执行一些基本的点击事件。我知道 Optimizely 仅适用于 jquery 1.6,因此使用 on(), off() 对于事件来说是没有用的。为了确保这一点,我使用的是最基本的事件处理程序 click(function(){ ... }));, ,但即使这样也不起作用。我被告知要使用 window.$ 但在 click() 这个技术也行不通。Optimizely中的jquery有什么不同吗?

我知道 Optimizely 和 jQuery 之间存在某种问题,但有人可以帮我解释一下吗?

JS 片段:

(function(window.$) {

  window.$.fn.tabbs = function(options) {
    var settings = {
            dir: 'top',
            trigger: 'a',
            target: '.tab-section',
            selected: 'selected'
        },
        html = $('html');

    window.alert('jquery object: ' + window.$);

    if (html.hasClass('no-js')) {
        html.removeClass('no-js').addClass('js');
    } else {
        html.addClass('js');
    }

    var classAction = function(obj, action, cls) {
        window.$(obj)[action](cls);
    };

    window.$.extend(settings, options);

    return this.each(function() {
        var tabs = window.$(this),
            tab = tabs.find(settings.trigger),
            tabSection = window.$(settings.target),
            tabsSystemContainer = tabs.closest('div');

        switch(settings.dir) {
            case 'left':
                tabsSystemContainer.removeClass(settings.dir || 'top').addClass('left' || settings.dir);
                break;
            default:
                tabsSystemContainer.removeClass('left' || settings.dir).addClass(settings.dir || 'top');
        }
        //this where I'm having problems
        tab.click(function(e) {
            var self = window.$(this);

            e.preventDefault();

            window.alert('Hello, inside tab click event...');
        });
    });
  };
}(window.jQuery));

window.$('.tabs').tabbs();

许多感谢

有帮助吗?

解决方案

第 1 行有语法错误:

(function(window.$) {

应该读

(function($) {

您可以使用您喜欢的任何 jQuery (>= 1.6):只需嵌入您想要的,然后在 Optimizely 的“设置”->“jQuery 设置”中,选择“在项目代码中不包含 jQuery”,一切都会正常进行。不过,请确保在 Optimizely 脚本标记之前包含您自己的 jQuery。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top