데이터 속성이 존재하는지 확인할 수 있는 방법이 있나요?
다음을 실행할 수 있는 방법이 있습니까?
var data = $("#dataTable").data('timer');
var diffs = [];
for(var i = 0; i + 1 < data.length; i++) {
diffs[i] = data[i + 1] - data[i];
}
alert(diffs.join(', '));
ID가 #dataTable인 요소에 data-timer라는 속성이 있는 경우에만?
if ($("#dataTable").data('timer')) {
...
}
: 반환되는 은 의: 것은만 note note note note note note note returns returns returns returns returns returns returns returns 。true
데이터 속성이 빈 문자열 또는 "허위" 값이 아닌 경우. 0
★★★★★★★★★★★★★★★★★」false
.
비어 있는 경우에도 데이터 속성의 존재를 확인하려면 다음 절차를 수행합니다.
if (typeof $("#dataTable").data('timer') !== 'undefined') {
...
}
if (typeof $("#dataTable").data('timer') !== 'undefined')
{
// your code here
}
, 하실 수 .Object.hasOwnProperty(...)
음음음같 뭇매하다
if( $("#dataTable").data().hasOwnProperty("timer") ){
// the data-time property exists, now do you business! .....
}
개 를 할 수 ..data()
하다
var objData = $("#dataTable").data();
for ( data in objData ){
if( data == 'timer' ){
//...do the do
}
}
이 솔루션이 여기 있는 다른 솔루션보다 낫다고는 할 수 없지만, 적어도 다른 접근 방식이라 할 수 있습니다.
여기의 모든 답변은 jQuery 라이브러리를 사용합니다.
하지만 바닐라 자바스크립트는 매우 간단합니다.
스크립트가 은, 「」를가 있는 입니다.id
#dataTable
또,data-timer
다음과 .
// Locate the element
const myElement = document.getElementById('dataTable');
// Run conditional code
if (myElement.dataset.hasOwnProperty('timer')) {
[... CODE HERE...]
}
아니면 바닐라 JS를 섞어서
if ($("#dataTable").get(0).hasAttribute("data-timer")) {
...
}
빈 값과 결측값을 구별하려면 jQuery를 사용하여 다음과 같이 확인할 수 있습니다.
<div id="element" data-foo="bar" data-empty=""></div>
<script>
"foo" in $('#element').data(); // true
"empty" in $('#element').data(); // true
"other" in $('#element').data(); // false
</script>
그래서 원래 질문부터 이렇게 하는 거예요.
if("timer" in $("#dataTable").data()) {
// code
}
jQuery의 hasData 메서드를 사용할 수 있습니다.
http://api.jquery.com/jQuery.hasData/
jQuery.hasData(element)의 주요 장점은 현재 존재하지 않는 경우 데이터 개체를 생성하여 요소에 연결하지 않는다는 것입니다.이에 반해 jQuery.data(element)는 항상 데이터 객체를 발신자에게 반환하고 이전에 데이터 객체가 존재하지 않았던 경우 데이터 객체를 작성합니다.
요소 상에 데이터 객체(또는 이벤트)가 존재하는지 여부만 검사하고 "timer" 객체가 있는지 여부는 확인할 수 없습니다.
매우 간단한 jQuery-plugin을 생성하여 이를 위해 요소를 쿼리할 수 있습니다.
$.fn.hasData = function(key) {
return (typeof $(this).data(key) != 'undefined');
};
사용하시면 .$("#dataTable").hasData('timer')
Gotchas:
false
하지 않는 에만( 「 「 「 」 「 」 ) 。undefined
되어 있는 는, 「」로 설정됩니다.false
/null
hasData()
true
.- 좀 요.
$.hasData()
요소에 데이터가 설정되어 있는지 여부만 확인합니다.
이것은 특정 데이터 속성을 가진 요소를 모두 선택하는 것이 가장 쉬운 해결책이라고 생각합니다.
var data = $("#dataTable[data-timer]");
var diffs = [];
for(var i = 0; i + 1 < data.length; i++) {
diffs[i] = data[i + 1] - data[i];
}
alert(diffs.join(', '));
여기 작동 원리의 스크린샷이 있습니다.
이 기능은 동적으로 설정된 데이터 요소에서 더 잘 작동합니다.
if ($("#myelement").data('myfield')) {
...
}
css Atribute를 선택하여 확인할 수 있습니다.
if ($('#dataTable').is('[data-timer]')) {
// data-timer attribute exists
}
오답 - 마지막 편집 참조
알렉스의 대답을 토대로 해 봅시다.
데이터 객체가 존재하지 않는 경우 데이터 객체가 생성되지 않도록 하려면 다음 작업을 수행하는 것이 좋습니다.
$.fn.hasData = function(key) {
var $this = $(this);
return $.hasData($this) && typeof $this.data(key) !== 'undefined';
};
그럼, 어디서$this
데이터 개체가 생성되지 않았습니다.$.hasData
돌아온다false
실행하지 않습니다.$this.data(key)
.
편집: 함수$.hasData(element)
를 사용하여 데이터를 설정한 경우에만 동작합니다.$.data(element, key, value)
,것은 아니다.element.data(key, value)
그 때문에 제 답은 틀렸습니다.
간단한 부울이 필요했어요존재하지 않거나 거짓이 아닌 것으로 정의되어 있지 않기 때문에!!
부울로 변환하려면:
var hasTimer = !!$("#dataTable").data('timer');
if( hasTimer ){ /* ....... */ }
대체 솔루션은 필터를 사용하는 것입니다.
if( $("#dataTable").filter('[data-timer]').length!==0) { /* ....... */ }
var data = $("#dataTable").data('timer');
var diffs = [];
if( data.length > 0 ) {
for(var i = 0; i + 1 < data.length; i++) {
diffs[i] = data[i + 1] - data[i];
}
alert(diffs.join(', '));
}
또, 이하에 대해서:
if ($('#dataTable[data-timer]').length > 0) {
// logic here
}
언급URL : https://stackoverflow.com/questions/12161132/is-there-a-way-that-i-can-check-if-a-data-attribute-exists
'programing' 카테고리의 다른 글
스프링 MVC 컨트롤러 get call에서 IP 주소를 추출하는 방법 (0) | 2022.12.31 |
---|---|
InputStream을 UTF-8로 읽기 (0) | 2022.12.31 |
도커 컨테이너를 통한 데이터베이스 연결 문제 (0) | 2022.12.31 |
Panda Dataframe의 컬럼에서 NaN 값을 Zeroes로 대체하려면 어떻게 해야 합니까? (0) | 2022.12.21 |
HTTP 414 "Request URI too long" 오류를 해결하려면 어떻게 해야 하나요? (0) | 2022.12.21 |