클릭 한 요소의 클래스를 얻는 방법?


228

class클릭 한 요소 의 값 을 얻는 방법을 알 수 없습니다 .

아래 코드를 사용하면 매번 "node-205"가 나타납니다 .

jQuery :

.find('> ul')
.tabs(
{
    selectedClass: 'active',
    select: function (event, ui) {
        //shows only the first element of list
        $(this).children('li').attr('class');
    },
    cookie: { expires: 0 },
    fx: fx
})

HTML :

<ul class="tabs">
  <li class="node-205"></li>
  <li class="node-150"></li>
  <li class="node-160"></li>
</ul>

귀하의 질문은 분명하지 않습니다 ... jquery 플러그인을 사용하고 있습니까?
jrharshath 2016 년

클릭 한 항목 인 경우 click () 함수를 사용하여 이벤트를 바인딩하고 클래스를 가져 와서는 안됩니까? 어쩌면 내가 ... 완전히 질문을 이해하지 못했다
전자 satis

답변:


396

다음은 각 "li"태그에 click 이벤트를 추가 한 다음 clicked 요소의 클래스 속성을 검색하는 빠른 jQuery 예제입니다. 도움이 되길 바랍니다.

$("li").click(function() {
   var myClass = $(this).attr("class");
   alert(myClass);
});

마찬가지로 jQuery에서 객체를 래핑 할 필요가 없습니다.

$("li").click(function() {
   var myClass = this.className;
   alert(myClass);
});

최신 브라우저 에서는 클래스 이름전체 목록을 얻을 수 있습니다 .

$("li").click(function() {
   var myClasses = this.classList;
   alert(myClasses.length + " " + myClasses[0]);
});

당신은 classList사용하여 오래된 브라우저에서 에뮬레이트 할 수 있습니다myClass.split(/\s+/);


1
"class"는 유효한 변수 이름이 아닙니다.
Fred Bergman

1
jQuery가 먼 길인 재미있는 상황 중 하나입니다. this.className는 $로 당신에게 (이) .attr ( "클래스") 같은 줄 것이다
데이비드 길버트 슨

요소에 둘 이상의 클래스 이름이있는 경우 어떻게합니까?
Dharman

1
이유가 확실하지 않지만 두 번째 예는 클래스 이름을 검색 할 수 없습니다. 그러나 첫 번째 예는 훌륭합니다! 감사! 나를 도와주었습니다. :)
Chiefwarpaint

38
$("li").click(function(){
    alert($(this).attr("class"));
});

28

나는이 질문을 보았으므로 조금 더 확장 할 수 있다고 생각했습니다. 이것은 @SteveFenton이 가진 아이디어의 확장입니다. click이벤트를 각 li요소 에 바인딩하는 대신 ul아래쪽 에서 이벤트를 위임하는 것이 더 효율적 입니다.

jQuery 1.7 이상

$("ul.tabs").on('click', 'li', function(e) {
   alert($(this).attr("class"));
});

선적 서류 비치: .on()

jQuery 1.4.2-1.7의 경우

$("ul.tabs").delegate('li', 'click', function(e) {
   alert($(this).attr("class"));
});

선적 서류 비치: .delegate()

jQuery 1.3-1.4의 최후의 수단으로

$("ul.tabs").children('li').live('click', function(e) {
   alert($(this).attr("class"));
});

또는

$("ul.tabs > li").live('click', function(e) {
   alert($(this).attr("class"));
});

선적 서류 비치: .live()


17

트릭을 수행해야합니다.

...
select: function(event, ui){ 
   ui.tab.attr('class');
} ,
...

ui.tab에 대한 자세한 내용은 http://jqueryui.com/demos/tabs/#Events를 참조하십시오.


이것은 무엇을 의미 하는가? 더 설명해 주시겠습니까?

사용해야하는 ui.item 대신 ui.tab입니다. 나는 그것이 ui.item이라고 생각했다.
jeroen.verhoest

11

제공된 모든 솔루션을 사용하면 미리 클릭 할 요소알아야합니다 . 클릭 한 요소 에서 클래스를 가져 오려면 다음을 사용할 수 있습니다.

$(document).on('click', function(e) {
    clicked_id = e.target.id;
    clicked_class = $('#' + e.target.id).attr('class');
    // do stuff with ids and classes 
    })

2
ID를 얻는 것이 신뢰할 수 없다면 항상 $(e.target)대신 사용할 수 $('#' + e.target.id)있으며 jQuery는 여전히이 경우를 합리적으로 처리합니다.
BobChao87

9
$("div").click(function() {
  var txtClass = $(this).attr("class");
  console.log("Class Name : "+txtClass);
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.