2011-10-03 34 views
1

我想回港的幻燈片我的jQuery 1.6寫在Drupal,您可能會或可能不知道目前被「鎖定」到jQuery的1.3上班(我知道,這是延遲)。jQuery的「這個」遺產範圍界定

雖然jQuery 1.3的$(this)模型沒有像現代發行版那樣健壯或有幫助,但我遇到了範圍問題。

這裏是一個的突破代碼:

var $controls = $('a.controls', $frame); 

$controls.click(function() { 

    var $clicked = $(this); 

    // ... 

} 

a.controls表達結果中$controls兩個對象的集合預期。但是,當jQuery的1.3 encouters的$(this)分配,它拋出以下錯誤:

this[0].ownerDocument is null

有誰知道它爲什麼這樣做,我怎麼能圍繞其固定或工作?

+0

的Drupal 6一個非常惱人的問題不是「鎖定」到版本1.3在所有...一些核心js文件的僅僅依靠1.3.2。如果你沒有這些核心js文件,那麼你可以把你想要的任何版本的jQuery。你也應該非常清楚,jQuery 1.6將目標移動了一點點,所以讓它與任何主要系統一起工作將是一場噩夢,直到​​系統升級到使用最新版本。 – Clive

+3

加載第二個版本的jQuery並僅在幻燈片中使用它可能會更簡單。當然,這是另一個必須下載的文件。 – thirtydot

+1

@Clive我不打算妥協核心;這似乎是一個糟糕的主意 - 純粹來自維護點 - 而我的用戶需要這些功能才能讓管理站點的體驗更加輕鬆,更有幫助。你能告訴我是否有可能在不損害Core的情況下添加jQuery的第二個版本? – markedup

回答

0

這可能不是在錯誤發生,this方面的工作在1.3事件回調在最新的版本相同。

例子:http://jsfiddle.net/hPfZH/2/

  • 你確定$frame背景下是正確的?
  • 您是否正在使用內嵌 點擊$controls上的事件可以添加衝突?
-1

這可能不是回答這個問題,但可以幫助你的問題。

使用Drupal模塊jquery update你可以選擇在Drupal jQuery的版本。

+0

以下回復一個答案,否則你不能,它會將Drupal 6更新爲1.3.2或者Drupal 7到1.5.2。 OP使用Drupal 6並已經使用jQuery 1.3的事實應該告訴你你需要知道的一切。 – Clive

+0

你可以簡單地將你提問的drupal版本添加到模塊目錄中,而不是在那裏的jQuery版本,我認爲這是人們做的 – HerrSerker

0

我認爲這將會完成的唯一方法是使用jquery_update模塊的一小部分。您需要將sites/all/modules/jquery_update/jquery_update中的jquery.min.js(或jquery.js,如果您未使用最小化版本)文件替換爲最新的jQuery版本,請更改jquery.module文件(約59行):

function jquery_update_preprocess_page(&$variables) { 
    // Only do this for pages that have JavaScript on them. 
    if (!empty($variables['scripts'])) { 

    // ADD THESE TWO LINES BEFORE THE REST OF THE CODE 
    if (preg_match('/^\/admin[\/]*.*/', $_SERVER['REQUEST_URI'])) { return; } 
    if (preg_match('/^\/batch[\/]*.*/', $_SERVER['REQUEST_URI'])) { return; } 

這將基本上告訴jquery_update只更換非管理員和非批處理的網頁,這應該成爲你的目的的JavaScript。根據您的需要,您可能需要添加其他路徑以添加到該檢查中。

我沒有測試過這個,但理論上它可以工作,不幸的是,我不能評論AHAH(Drupal在AJAX框架中的蹩腳嘗試)是否可以在非管理頁面上使用jQuery的更新版本。

希望你得到這個整理是:-)

+0

感謝您的提示,但它似乎並沒有爲我工作。我遵循所有的指示(包括如上修改[jquery_update.module]),但現在我得到了來自jQuery 1.6.4的「p,a,c,k,e,r」錯誤...所以我不'我想我可以做到這一點。欣賞你的幫助! – markedup

+0

這是一個恥辱,我認爲其中一個主要問題是,在jQuery 1.6中發生了很多變化......如果你可以放棄使用1.5.2,它可能會起作用,但它確實是個好運氣! – Clive

+1

除了最後的評論(不能讓這個人因爲某種原因而離開!),Drupal.org上的[這篇文章](http://drupal.org/node/1067290)有人聲稱他們已經得到了jQuery 1.5.1與Drupal 6一起使用類似於上面答案中提到的方法......也許這會幫助你分類嗎? – Clive