2013-02-05 28 views
0

我開發的Greasemonkey/Tampermonkey,去除在谷歌搜索結果頁面的onmousedown事件屬性從標籤的userscript的第一要素。的jQuery 1.9.1選擇標記名稱只返回

該插件指示腳本正在運行,腳本被執行,但沒有任何事情發生。

我已打開控制檯並嘗試手動執行此操作,但選擇器只選擇頁面中的第一個

我已經試過:

$("a") 
$("a.l") 
$(".l") 

我也試圖改變在文檔開始,文檔體和文檔結束userscript的位置,但結果是一樣的:只返回匹配的第一個元素。

Script代碼:

// ==UserScript== 
// @name  Google onmousedown remove 
// @version 0.1 
// @include  /^https?://[a-z]*\.?google\.[a-z\.]+/search.*/ 
// @require http://code.jquery.com/jquery-1.9.1.min.js 
// @run-at  document-end 
// ==/UserScript== 

$(document).ready(function(){ 
    $("a.l").each(function(){ $(this).removeAttr("onmousedown"); }); 
}); 

在哪裏的問題?謝謝。

+0

谷歌沒有運行jquery btw,不知道是不是這個問題 –

+0

jQuery被腳本包含在第5行。 –

+1

ok,但是如果你在谷歌和$('。l')在控制檯上,你會得到第一個元素(沒有任何jQuery),所以他們使用$的東西。 嘗試使用jQuery.noConflict(),然後使用jQuery而不是$ –

回答

3

如果您嘗試在搜索頁上的控制檯中鍵入$,您將看到與jQuery定義的通常的function (e,t){return new i.fn.init(e,t,u)}不同的東西。所以...

似乎Google定義了自己的$函數,它的行爲有所不同。最簡單的解決方案是明確使用jQuery而不是$jQuery('a.l')

但它是很長的,所以這裏是jQuery的訣竅:代替document.ready,調用jQuery函數並將函數傳遞給參數$。然後在這個函數裏面$等於jQuery

jQuery(function ($){ 
    $("a.l").each(function(){ $(this).removeAttr("onmousedown"); }); 
}); 

未測試,但應該工作。

+0

使用jQuery工作,謝謝! –