2014-02-06 5 views
0

데이터 속성 값 (data-event_id = 1282)으로 <li> 요소를 가져 오려고합니다.jQuery 데이터 ID로 요소 가져 오기

<div id="timeline"> 
    <ul> 
     <li class="timeline-event"> 
      <div>Event Body</div> 
     </li> 
    </ul> 
</div> 

$el = $('#timeline ul').find("li.timeline-event").data('event_id'); 
console.log($el); // returns 1282 

$el = $('#timeline ul').find("li.timeline-event[data-event_id='1282']").html(); 
console.log($el); // returns undefined 

내가 뭘 잘못하고 있니?

EDIT - 솔루션

데이터는 .DATA를 사용하여 설정된다 ('1282'을 'EVENT_ID')를 다른 코드이다.

.data()를 사용하여 jQuery를 설정하면 데이터를 가져올 수 없습니다.

@psycho brm이 filterByData 함수를 사용하여 여기에서 해결책을 찾았습니다. 그것은 작동합니다!

jQuery how to find an element based on a data-attribute value?

$.fn.filterByData = function(prop, val) { 
    return this.filter(
     function() { return $(this).data(prop)==val; } 
    ); 
} 

나는이 비록 jQuery를 버그를해야합니다 가정?

+2

그들에 지정하도록해야

귀하가 제공 한 html에 data-event_id 속성이 없습니다. 샘플 코드를 업데이트하십시오. –

+1

'.find()'는'undefined'를 반환하지 않습니다. 아무 것도 찾지 못해도 빈 jQuery 컬렉션을 반환합니다. – Barmar

+0

[jQuery의 가능한 중복 데이터 속성 값을 기반으로 요소를 찾는 방법?] (http://stackoverflow.com/questions/4191386/jquery-how-to-find-an-element-based-on-a -data-attribute-value) – showdev

답변

0

데이터는 코드의 다른 곳에서 .data ('event_id', '1282')를 사용하여 설정됩니다.

.data()를 사용하여 jQuery를 설정하면 데이터를 가져올 수 없습니다.

여기서 filterByData 함수를 사용하여 해결책을 찾았습니다. 그것은 작동합니다! 당신이 그에게 리 (I) 클래스 이름을 가진 두 개의 옵션을 제공해야하기 때문에 정의되지 않은

jQuery how to find an element based on a data-attribute value?

+0

답변에 귀하의 심판 응답 내용을 추가하십시오. 그렇지 않으면 귀하의 대답은 그 이상의 유일한 링크 대답은 그렇게 홍보하지 않습니다. 당신이 바이올린을 제공하면 좋을 것입니다. – Satpal

0

html에 data-attr이 표시되지 않습니다.

나는 리 http://jsfiddle.net/dehisok/Wa5RG/

<li class="timeline-event" data-event_id="1282"> 
그것은 작동

에 "1282"데이터 EVENT_ID =를 추가하여 코드를 시도!

+0

코드의 첫 부분이 어떻게 작동하는지 설명합니까? – Barmar

+0

아마도 "데이터"(하지만 속성이 아님)를 설정하는 js 코드가 있습니다. –

0

두 번째 ID를 반환 (II) 속성에만이