2010-04-25 21 views
4

如何處理沒有ID的鏈接?它只有一個類名,如「classbeauty」。如何處理JavaScript中的點擊鏈接?

現在我需要知道用戶是否點擊了鏈接。 如果鏈接被點擊,我只需要撥打alert("yes link clicked");

我不知道如何處理JavaScript中的事件。

我該怎麼做?

+2

試試jQuery。拿出來喝幾杯。看看你是否相處。不需要長期的承諾。 – 2010-04-25 21:22:54

回答

12

如果jQuery是一個選項:

$("a.classbeauty").click(function(){ 
    alert("yes link clicked"); 
}); 

如果您需要純JavaScript:

var elements = document.getElementsByTagName("a"); 
for(var i=0; i<elements.length; i++){ 
    if (elements[i].className == 'classbeauty') { 
     elements[i].onclick = function(){ 
      alert("yes link clicked!"); 
    } 
} 
} 

如果你需要它Greasemonkey

function GM_wait() { 
    if(typeof unsafeWindow.jQuery != 'function') { 
     window.setTimeout(wait, 100); 
    } else {   
      unsafeWindow.jQuery('a.classbeauty').click(function(){ 
        alert('yes link clicked'); 
       }); 
    } 
} 
GM_wait(); 
+1

爲什麼不'getElementsByTagName(「a」)'? – BalusC 2010-04-25 21:47:08

2
function getElementsByClassName(class_name) { 
    var elements = document.getElementsByTagName('*'); 
    var found = []; 

    for (var i = 0; i < elements.length; i++) { 
     if (elements[i].className == class_name) { 
      found.push(elements[i]); 
     } 
    } 

    return found; 
} 

getElementsByClassName("YourClass")[0].onclick = function() { alert("clicked"); }; 

這是純順便說一下,JavaScript。這裏的每個人都喜歡jQuery(包括我)。

+3

您不能在陣列上分配'onclick'。 – bobince 2010-04-25 21:10:43

+0

你在那裏看到[0],是嗎? – 2010-04-25 21:30:50

+3

不要忘記,元素可以有多個空格分隔的類,所以這個解決方案可能會錯過一個以上類的錨點。一個簡單的解決方法是添加'var regex = new RegExp(「\\ b」+ class_name +「\\ b」)'然後'if(regex.test(elements [i] .className){'而不是僅僅檢查字符串相等的類名稱 – maerics 2010-04-25 21:34:16

1
for (var i= document.links.length; i-->0;) { 
    if (document.links[i].className==='classbeauty') { 
     document.links[i].onclick= function() { 
      alert('yes link clicked'); 
      return false; // if you want to stop the link being followed 
     } 
    } 
} 
+1

+1這是一個很好的答案,請正確,不要downvote! – systempuntoout 2010-04-25 21:23:09

+1

-1沒有足夠的jQuery(只是在開玩笑) – 2010-04-25 22:03:27

0
function handleLinks(className, disableHref) { 
    var links = document.body.getElementsByTagName("a"); 

    for (var i = 0; i < links.length; i++) { 
     if (links[i].className == className) { 
      links[i].onclick = function(){ 
       alert('test') 
       if (disableHref) { 
        return false; //the link does not follow 
       } 
      } 
     } 
    } 

} 

handleLinks('test', true) 

您可以在此鏈接測試: http://jsfiddle.net/e7rSb/

0

我不知道這是否是一種選擇,但我會翻轉標誌鏈接被點擊的時候,然後就測試該變量。

//javascript 
var _cbClicked = false; 
function checkClicked() { 
    if (_cbClicked) alert("link was clicked"); 
    return false; 
} 

//html 
<a href="#" class="classbeauty" onclick="_cbClicked = true; return false;">Link Text</a> 
<a href="#" onclick="checkClicked();">Check Link</a> 

很簡單,純JS :)

1

如果控制源代碼,你可以添加你的腳本嵌入。

<a onclick="alert('yes link clicked'); return false">Link</a> 

如果你的目標的現代瀏覽器,你可以用getElementsByClassName選擇元素。這裏有幾個人提出了他們自己的這個函數的實現。

var node = document.getElementsByClassName('classbeauty')[0] 
node.onclick = function(event){ 
    event.preventDefault() 
    alert("yes link clicked") 
} 
+1

+1 for preventDefault() – meo 2010-04-25 21:45:59