source

배열의 첫 번째 값이 아닌 .data() 함수가 []를 반환하는 이유는 무엇입니까?

itover 2023. 3. 13. 20:25
반응형

배열의 첫 번째 값이 아닌 .data() 함수가 []를 반환하는 이유는 무엇입니까?

서버 측의 jQuery 데이터 속성에 배열을 전달하고 다음과 같이 가져옵니다.

var stuff = $('div').data('stuff');
alert(stuff[0]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<div data-stuff="['a','b','c']"></div>

이것이 'a'가 아닌 '[]'로 표시되는 이유는 무엇입니까(JSFiddle 링크 참조).

JSFiddle 링크: http://jsfiddle.net/ktw4v/3/

변수를 문자열로 처리하는 것입니다. 이 문자열의 0번째 요소는[.

이는 문자열이 유효한 JSON이 아니기 때문에 발생합니다.JSON은 작은 따옴표 대신 큰따옴표를 문자열 구분 기호로 사용해야 합니다.그런 다음 단일 따옴표를 사용하여 전체 속성 값을 구분해야 합니다.

따옴표를 수정하면 원래 코드가 작동합니다(http://jsfiddle.net/ktw4v/12/) 참조).

<div data-stuff='["a","b","c"]'> </div>

var stuff = $('div').data('stuff');

jQuery는 데이터 속성에서 유효한 JSON을 찾으면 자동으로 압축을 풉니다.

Atribute로 선언하는 것은 문자열임을 의미합니다.

그렇게stuff[0]다음과 같습니다.var myString = "['a','b','c']"; alert(myString[0]);

다음과 같이 만들어야 합니다.

<div data-stuff="a,b,c"></div>

var stuff = $('div').data('stuff').split(',');
alert(stuff[0]);

철회: jQuery의 파싱이 parseJ의 규칙을 충족하지 않아 실패했습니다.아들.

하지만, 나는 내 해결책을 지지할 것이다.이 솔루션이 어떤 면에서는 이상적이지 않은 것처럼 다른 측면도 있습니다.모든 것은 당신의 패러다임이 무엇이냐에 달려있다.

다른 사용자가 확인한 대로 값이 문자열로 처리되어 ""가 반환됩니다.이것을 시험해 주세요(aaa는 div의 이름이고, data-strup을 꺼냈습니다).

$(function(){
    $.data($("#aaa")[0],"stuff",{"aa":['a','b','c']});
    var stuff = $.data($("#aaa")[0],"stuff").aa;
    alert(stuff[0]); //returns "a"
});

jsfiddle에는 다른 접근방식이 게시되어 있다.var stuff = $('div').data('stuff');stuff는 0번째 문자가 '['인 문자열입니다.

음.var stuff = eval($('div').data('stuff'));어레이를 준비합니다.

언급URL : https://stackoverflow.com/questions/6071618/why-is-my-data-function-returning-instead-of-the-first-value-of-my-array

반응형