.data () 키 / 값을 기준으로 필터 요소
class을 가진 4 개의 div 요소가 .navlink
있는데, 클릭하면 .data()
키라 'selected'
는 값을 true
다음 과 같이 설정합니다 .
$('.navlink')click(function() { $(this).data('selected', true); })
새로운 것을 .navlink
클릭 할 때마다 , navlink
나중에 조작하기 위해 이전에 선택한 것을 저장하고 싶습니다 . 사용하여 저장된 것을 기반으로 요소를 빠르고 쉽게 선택할 수 .data()
있습니까?
계산서에 맞는 jQuery : filters 가없는 것 같으며 동일한 클릭 이벤트 내에서 다음을 시도했지만 어떤 이유로 작동하지 않습니다.
var $previous = $('.navlink').filter(
function() { $(this).data("selected") == true }
);
나는 이것을 달성 할 수있는 다른 방법이 있다는 것을 알고 있지만, 지금은를 통해 수행 할 수 있는지 궁금합니다 .data()
.
필터는 작동하지만 필터에 전달 된 함수에서 일치하는 객체를 가져 오려면 true를 반환해야합니다.
var $previous = $('.navlink').filter(function() {
return $(this).data("selected") == true
});
레코드를 위해 jquery를 사용하여 데이터를 필터링 할 수 있습니다 (이 질문은 상당히 오래되었고 jQuery는 그 이후로 발전 했으므로이 솔루션을 작성하는 것이 좋습니다 ).
$('.navlink[data-selected="true"]');
또는 더 나은 (성능을 위해) :
$('.navlink').filter('[data-selected="true"]');
또는 data-selected
set 을 사용하여 모든 요소를 얻으려면 다음을 수행하십시오.
$('[data-selected]')
참고 이 방법은 HTML-속성을 통해 설정 데이터를 작동합니다. .data()
호출로 데이터를 설정하거나 변경 하면이 방법은 더 이상 작동하지 않습니다.
플러그인을 매우 쉽게 만들 수 있습니다 :
$.fn.filterData = function(key, value) {
return this.filter(function() {
return $(this).data(key) == value;
});
};
사용법 (라디오 버튼 확인) :
$('input[name=location_id]').filterData('my-data','data-val').prop('checked',true);
내가 알아 차린 두 가지 (당신이 그것을 적었을 때 실수 일 수 있습니다).
- 첫 번째 예에서 점을 놓쳤습니다 (
$('.navlink').click
) - 필터가 작동하려면 값을 반환해야합니다 (
return $(this).data("selected")==true
)
그 가치보다 더 많은 일처럼 들립니다.
1) 현재 선택된 element \ jQuery 객체에 대한 참조를 저장하는 단일 JavaScript 변수 만있는 이유는 무엇입니까?
2) 현재 선택된 요소에 클래스를 추가하지 않는 이유는 무엇입니까? 그런 다음 DOM에 ".active"클래스 등을 쿼리 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/1009485/filter-element-based-on-data-key-value
'IT박스' 카테고리의 다른 글
ReactJS에서 뷰포트 / 창 높이 가져 오기 (0) | 2020.07.26 |
---|---|
node_modules / rxjs / internal / types.d.ts (81,44) : 오류 TS1005 : ';' (0) | 2020.07.26 |
R에서 ggplot2로 히스토그램 오버레이 (0) | 2020.07.26 |
비트 맵을 파일로 변환 (0) | 2020.07.26 |
Rails 4-변수를 부분적으로 전달 (0) | 2020.07.26 |