developer tip

배열을 jQuery .data () 속성에 전달하는 방법

optionbox 2020. 10. 10. 09:58
반응형

배열을 jQuery .data () 속성에 전달하는 방법


좋아, 그래서 나는 매우 기본적인 배열을 jquery 데이터 attrubute 서버 측에 다음과 같이 전달하고 싶다.

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

그런 다음 다음과 같이 검색하십시오.

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

alert(stuff[0]);

왜 이것이 'a'가 아니라 '['경고로 표시됩니까 (JSfiddle 링크 참조)

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


변수를 문자열로 처리하고 0 번째 요소는 [.

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

인용 부호를 수정하면 원래 코드가 작동합니다 ( http://jsfiddle.net/ktw4v/12/ 참조 ).

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

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

jQuery가 데이터 속성에서 유효한 JSON을 발견하면 자동으로 압축을 해제합니다 .


속성으로 선언하면 문자열임을 의미합니다.

따라서 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의 구문 분석이 parseJSON의 규칙을 충족하지 않았기 때문에 실패합니다.

그러나 나는 내 솔루션 뒤에 설 것입니다. 이 솔루션이 어떤면에서 이상적이지 않은 것처럼 이상적이지 않은 다른 측면이 있습니다. 모두 당신의 패러다임이 무엇인지에 달려 있습니다.


다른 사람들이 식별했듯이 값은 문자열로 처리되어 "["를 반환합니다. 이것을 시도하십시오 (aaa는 div의 이름이고 데이터를 꺼 냈습니다).

$(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/how-to-pass-an-array-into-jquery-data-attribute

반응형