2012-03-20 75 views
0

我正在使用JavaScript書籤動態地添加jQuery到網頁。該書籤是:強力添加jQuery返回從選擇器奇怪的結果

javascript:var s=document.createElement('script');s.type='text/javascript';s.src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js';document.getElementsByTagName('body')[0].appendChild(s); 

當我跑這對一個示例站點(比如www.google.com),通過打開Chrome Web檢查我得到:

>jQuery; 
    ReferenceError: jQuery is not defined 

----運行小書籤---

>jQuery; 
    function (a,b){return new e.fn.init(a,b,h)} 
>jQuery('a'); 
    [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] 

爲什麼返回一個空元素數組?我的期望是DOM元素的數組或jQuery對象將被返回。

+0

可能只是一個顯示問題,是在控制檯嗎?嘗試'$('a')。html('')',看看所有的標題鏈接文本是否消失。 – 2012-03-20 20:32:04

+0

試試這個:'jQuery('a:first')。html()'這可能只是空的。 – gdoron 2012-03-20 20:32:37

+0

您使用的是哪個Chrome版本?你有沒有安裝任何devtools相關的擴展? – 2012-03-20 20:33:32

回答

0

這可能只有看起來空因爲有太多元素。

試試這個:jQuery('a').hide()。如果您在頁面中看不到任何鏈接,它可以工作... :-)

+0

'a:first'不會返回所有錨的列表。 – 2012-03-20 20:34:11

+0

@RobW。我知道,誰說會呢?他只想檢查頁面的jQuery作品。無論如何,它可以通過'.hide()'來完成...... – gdoron 2012-03-20 20:35:36

+0

這可能是一個有用的調試指針,但它更適合作爲評論。問題是「爲什麼返回空數組元素?」。我看不到'jQuery('*')。hide()'如何回答這個問題。在執行小書籤片段之後,jQuery被加載,因爲它最初是'undefined','function(a,b){return new e.fn.init(a,b,h)}'。 – 2012-03-20 20:37:59

0

可能只是控制檯的顯示問題。我通過將您的代碼添加爲書籤,然後隱藏google.com上的所有鏈接來驗證我的最新Chrome的工作情況。

我唯一能想到的就是你沒有等待腳本/頁面加載。您可以將一些日誌添加到書籤中以確保腳本已加載。

作爲一個旁註,在填充數組之前,chrome/jquery似乎使用它的長度呈現數組(在控制檯中)。在此頁面上打開開發工具並運行$('a')。在控制檯顯示數組中的HtmlElement之前,您將看到〜170個逗號。

0

當我完全按照您使用自己的書籤所描述的方式進行操作時,在Chrome的最新穩定版本的開發人員控制檯中,我將獲得一組dom元素,如您所期望的那樣。它看起來像下面的縮寫代碼。

[ 
<a href=​"/​setprefs?prev=https:​/​/​www.google...">​Screen reader users,...</a>​ 
, 
<a onclick=​"...</a>​ 
, 
... 
, 
<a id=​"cpNavLink" href=​"javascript:​void(0)​">​Change background image​</a>​ 
] 

我注意到,雖然是幾分之一秒,我得到一個像你的例子一樣的空數組。然後在幾分之一秒後填入dom元素。我幾乎可以看到它被元素逐個填充。所以,我的猜測是,Chrome或您的控制檯有問題。