2010-07-12 104 views
1

我遇到了麻煩,jQuery不識別我的網頁上的元素,並拋出一個錯誤,說我試圖選擇的元素爲空。爲什麼jQuery不能識別我的頁面上的元素?

我們將我們的內容分爲以下包裝,這是由客戶提供:

http://www.ft.com/global/mm0802/ag/wrapper

的包裝中包含以下字符串:

<!-- ftplchol id="contentFixed" version="1.0" -->

我們與更換我們的內容,然後渲染頁面。

這是我們內容的樣本:(我有這個問題下面它被描述)

<script src="/Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 

     $('.ActionControl a').live("click", function() { 
      $.get($(this).attr("href"), {}, function (result) { 
       // do stuff with result 
       }); 
      }, "html"); 

      return false; 
     }); 
    }); 
</script> 

<div class="ActionControl"> 
    <span>Fund Directory</span> 

    <span> 
     <a href="/funddirectory/DirectoryResult">A</a> 
    </span> 

    <span> 
     <a href="/funddirectory/DirectoryResult/B">B</a> 
    </span> 

    <span> 
     <a href="/funddirectory/DirectoryResult/C">C</a> 
    </span>  
</div> 

當我跑我的包裝的範疇之外的東西,一切都很好。我的代碼按預期行事。但是,當我運行完整的頁面插入到包裝我們的內容,以下行引發錯誤:

$('.ActionControl a').live("click", function() {

$('.ActionControl a')爲空。具體來說:Microsoft JScript runtime error: 'null' is null or not an object

雖然沒有任何意義。 $('.ActionControl a')不能不應該爲空,因爲在文檔準備好的時候,<div class="ActionControl">肯定存在於頁面上,並且它在我不使用包裝器時起作用。我可以用IE瀏覽器工具欄的FireBug &看到它。

即使我試圖得到類似$('a')$('div')(其中有很多頁),它仍然拋出了同樣的錯誤。我知道jQuery正在工作,因爲$(document).ready()函數工作..

有沒有人有任何想法,爲什麼這不會工作?包裝中是否有東西阻止它看到我的控件或其他控件?

+0

你可以修剪一下你的措辭嗎? – ChaosPandion 2010-07-12 16:59:35

回答

6

當jQuery選擇器不匹配任何元素時,它將返回一個空數組,而不是null。這意味着jQuery沒有加載。您的路徑「/Scripts/jquery-1.4.1.js」在其「包裝器」頁面的上下文中可能無效。也許使用jQuery的谷歌託管的版本代替,這將在所有上下文中工作:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript" charset="utf-8"></script> 

更新: 它只是發生,我認爲你可能會得到與jQuery發生衝突,並使用另一個JavaScript庫「 $'符號。嘗試使用jQuery的「noConflict」模式(http://api.jquery.com/jQuery.noConflict/),看看它是否工作在這方面:

$.noConflict(); 
jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
}); 
+0

我剛剛嘗試過,並且仍然拋出相同的錯誤:'Microsoft JScript運行時錯誤:'null'爲空或不是對象' – DaveDev 2010-07-12 17:01:03

+0

@Dave - 可能是時間了你可以顯示你的代碼被'//做了一些有結果的東西'。 – ChaosPandion 2010-07-12 17:02:49

+0

@DaveDev我剛剛添加了一個新的想法更新。看起來是 – sunetos 2010-07-12 17:07:06

0

是否在頁面上加載jQuery庫?

+0

是的,實際上'$(document).ready()'行可以很好地工作。當我刪除對jQuery的引用時,該行失敗 – DaveDev 2010-07-12 16:57:22

0

,當人們重新加載頁面,他們「替換」,最初被稱爲JavaScript的我已經看到了這個問題。原始lambda函數的引用在重寫後會丟失。

我會好奇的,如果你有的功能是重寫包含實時功能的塊。

您能否至少給我們一些關於lambda函數在做什麼的想法?

0

看起來像jQuery的舊版本被包含在from和覆蓋你的jQuery版本。該版本不支持.live,這可能會導致錯誤。

相關問題