Javascript 在Optimizely中,基本jquery单击事件不起作用
在Optimizely中,我尝试执行一些基本的单击事件。我知道Optimizely只在jQuery1.6上,所以对事件使用Javascript 在Optimizely中,基本jquery单击事件不起作用,javascript,jquery,javascript-events,optimizely,Javascript,Jquery,Javascript Events,Optimizely,在Optimizely中,我尝试执行一些基本的单击事件。我知道Optimizely只在jQuery1.6上,所以对事件使用on(),off()是无用的。为了确保这一点,我使用的是最基本的事件处理程序click(function(){…})),但即使这样也不起作用。有人告诉我要使用window.$但是在click()中,这种技术也不起作用。jquery在优化方面是否有所不同 我知道Optimizely和jQuery之间存在一些问题,但是有人能告诉我一些关于这方面的信息吗 JS代码片段: (func
on()
,off()
是无用的。为了确保这一点,我使用的是最基本的事件处理程序click(function(){…}))代码>,但即使这样也不起作用。有人告诉我要使用window.$但是在click()
中,这种技术也不起作用。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):只需嵌入您想要的jQuery,然后在Optimizely的设置->jQuery设置中,选择“不要在项目代码中包含jQuery”,一切都会正常工作。但是,请确保在Optimizely script标记之前包含您自己的jQuery。您正在设置一个立即调用的函数,并将其传递给窗口。jQuery
,然后您要做的第一件事是将该参数重新分配给窗口。$
。这似乎很奇怪。然后你就不用这个参数了…抱歉@Pointy,这是我做的一些实验。让我现在更新代码。更新,但仍然没有得到优化,虽然…你在哪里运行代码?它是在jQuery“ready”处理程序中,还是仅仅是
中
标记中的纯JavaScript?如果是后者,那么问题可能是您试图在DOM构建之前初始化选项卡。@Pointy:现在可以了,非常感谢。。。正如您所指出的,问题在于我忘记将代码包装在jquery“ready”处理程序中:$(function(){…})代码>