2012-10-01 103 views
0

在Optimizely中,我試圖做一些基本的點擊事件。我知道Optimizely只在jQuery 1.6上,所以使用on(),off()來進行事件是毫無用處的。爲了確保,我使用的是最基本的事件處理程序click(function(){ ... }));,但即使這樣也不起作用。我被告知使用window. $,但在click()這種技術也不起作用。 Optimizely中的jquery是不同的?在Optimizely中,基本的jquery點擊事件不起作用

我知道Optimizely和jQuery之間存在某種問題,但是請有人可以幫我解釋一下嗎?

JS snippett:

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

許多Thnaks

+0

您正在設置一個立即調用的函數,並將'window.jQuery'傳遞給該函數,然後您要做的第一件事是*將該參數重新分配給'window。$'。這似乎很奇怪。然後,你不使用參數... – Pointy

+0

對不起@Pointy,這是我做的一些expeirement。現在讓我更新代碼。 – Shaoz

+0

已更新,但仍然沒有得到Optimizely,雖然... – Shaoz

回答

1

你必須在第1行語法錯誤:

(function(window.$) { 

應該讀

(function($) { 

您可以任意使用jQuery的(> = 1.6)你喜歡:只需嵌入你想要的,然後在Optimizely的設置 - > jQuery設置中,選擇「不要在項目代碼中包含jQuery」,而且事情會很好。不過,請確保在Optimizely腳本標記之前包含自己的jQuery。