如何处理JavaScript中的点击链接?

时间:2010-04-25 20:58:06

标签: javascript

如何处理没有ID的链接?它只有一个类名“classbeauty”。

现在我需要知道用户是否点击了该链接。 如果点击了链接,我只需要拨打alert("yes link clicked");

我不知道如何在JavaScript中处理事件。

我该怎么做?

6 个答案:

答案 0 :(得分:13)

如果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 :(得分:3)

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(包括我)。

答案 2 :(得分:2)

如果您控制源代码,则可以内联添加脚本。

<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")
}

答案 3 :(得分: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
        }
    }
}

答案 4 :(得分: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/

答案 5 :(得分: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:)