【问题标题】:In Optimizely, basic jQuery click event not working在 Optimizely 中,基本的 jQuery 点击事件不起作用
【发布时间】:2012-10-01 14:05:27
【问题描述】:

在 Optimizely 中,我正在尝试做一些基本的点击事件。我知道 Optimizely 只在 jQuery 1.6 上,所以使用 on(), off() 事件是没用的。为了确保,我使用了最基本的事件处理程序click(function(){ ... }));,但即使这样也不起作用。我被告知要使用window.$,但在click() 中,这种技术也不起作用。 Optimizely中的jQuery有区别吗?

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

JS sn-pt:

(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();

【问题讨论】:

  • 您正在设置一个立即调用的函数,将window.jQuery 传递给该函数,然后您要做的第一件事就是将该参数重新分配window.$。这似乎很奇怪。然后你无论如何都不使用参数......
  • 对不起@Pointy,那是我正在做的一些实验。让我现在更新代码。
  • 已更新,但仍无法优化...
  • 您在哪里运行该代码?它是在 jQuery “就绪”处理程序中,还是只是在 <head> 中的 <script> 标记中的直接 JavaScript?如果是后者,那么问题可能是您在构建 DOM 之前尝试初始化选项卡。
  • @Pointy:它现在可以工作了,非常感谢......正如你所指出的,问题是我忘记将我的代码包装在 jquery“就绪”处理程序中:$(function() {...});

标签: javascript jquery jquery-events optimizely


【解决方案1】:

第 1 行有语法错误:

(function(window.$) {

应该阅读

(function($) {

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多