【发布时间】: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