2012-06-14 66 views
54

無論如何,點擊事件觸發時都有類。我的代碼如下所示,它只適用於id,但不適用於class。使用JQuery獲取觸發事件的元素的類

HTML:

<html> 
<body>  
<a href="#" id="kana1" class="konbo">click me 1</a> 
<a href="#" id="kana2" class="kinta">click me 2</a> 
</body> 
</html> 

JQuery的:

$(document).ready(function() { 
    $("a").click(function(event) { 
     alert(event.target.id+" and "+event.target.class); 
    }); 
}); 

的jsfiddle代碼here

+11

類是ECMAScript中的一個保留工作,因此class屬性映射到'className' DOM屬性。使用'event.target.className'。 – RobG

回答

103

嘗試:

$(document).ready(function() { 
    $("a").click(function(event) { 
     alert(event.target.id+" and "+$(event.target).attr('class')); 
    }); 
}); 
71

這將包含完整的類(可能是MULT如果元素具有多個類,則爲空元素分隔的類)。在你的代碼,它或者包含「konbo」或「近打」:

event.target.className 

您可以使用jQuery按名稱來檢查類:

$(event.target).hasClass('konbo'); 

,並與addClassremoveClass添加或刪除。

+5

用於'.className'的+1。 – 2012-06-14 03:02:09

1

如果您使用jQuery 1.7:

alert($(this).prop("class")); 

或:

alert($(event.target).prop("class")); 
1
<html> 
    <head> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
    </head> 
<body>  
<a href="#" id="kana1" class="konbo">click me 1</a> 
<a href="#" id="kana2" class="kinta">click me 2</a> 

<script> 
    $(document).ready(function() { 
    $("a").click(function(event) { 
     var myClass = $(this).attr("class"); 
     var myId = $(this).attr('id'); 
     alert(myClass + " " + myId); 
    }); 
}) 
</script>> 
</body> 
</html> 

這對我的作品。 jQuery中沒有event.target.class函數。

+0

由於某種原因,我必須使用該事件,無論如何感謝您的答案。 broesch已經回答了我所需要的。 – Redbox

0

小心,因爲target可能不適用於所有的瀏覽器,它適用於Chrome,但我認爲Firefox(或IE/Edge,不記得)有點不同,並使用srcElement。我通常這樣做

var t = ev.srcElement || ev.target; 

從而導致

$(document).ready(function() { 
    $("a").click(function(ev) { 
     // get target depending on what API's in use 
     var t = ev.srcElement || ev.target; 

     alert(t.id+" and "+$(t).attr('class')); 
    }); 
}); 

THX的不錯的答案!

相關問題