2013-03-28 4 views
0

하나의 함수에서 jQuery.data를 사용하여 다른 데이터에 액세스하려고하지만 첫 번째 함수 외부에서는 데이터가 정의되지 않은 상태로 나타납니다. 코드를 살펴보십시오.jQuery.data가 생성 된 함수 외부에서 정의되지 않았습니다?

$("input:radio[name=gender]:checked").each(function() 
{ 
    var genderChosen = $(this).val(); 
    alert(genderChosen); 
    var gender = $(".gender"); 
    jQuery.data(gender, 'genderChosen', genderChosen); 
    alert(jQuery.data(gender, 'genderChosen')); 
    // Displays "male" or "female" depending on what's selected 
}); 

var gender = $(".gender"); 
alert(jQuery.data(gender, 'genderChosen')); 
// Displays "undefined" 

누군가이 데이터를 원래 기능 밖에서 검색하도록 도와 줄 수 있습니까? 그게 jQuery.data 메서드의 요점이라고 생각했는데 ...

고마워!

$('.gender').data('genderChosen', genderChosen); 

당신은 이런 식으로 그것을 얻을해야합니다 :

답변

1

이처럼 설정해야합니다

var genderChosen = $('.gender').data('genderChosen'); 

그리고 당신은 맞다. 어디서나 첨부 된 데이터에 액세스 할 수 있어야합니다.

그리고 예. 이론적으로 jQuery.data()는 DOM 요소에 데이터를 첨부 할 때 .data()와 동일합니다. 나는 왜 그것이 당신을 위해 작동하지 않는지 모르겠다. 어쩌면 이것과 관련된 브라우저 특유의 단점이있을 수있다.

+0

감사합니다. 이론적으로는 어느 쪽이라도 작동해야합니다. 맞습니까? 왜 다른 방법으로 작동하지 않습니까? – bmcswee

+0

또한이 방법이 효과가 있다면 내 대답을 수락 하시겠습니까? 참고로, accepting과 upvoting은 같은 것이 아닙니다 (그러나 나는 두 가지를 모두 가지고 있습니다 : D) – SoonDead

관련 문제