2012-09-04 5 views
2

여기에 내가 일하고 있어요 일부 HTML 페이지에서 자바 스크립트 코드 :jQuery.data가 작동하지 않는 이유는 무엇입니까?

var widgetsList = $("[widgetId]"); 
ToLogger("Init: " + widgetsList.length + " widgets found."); 
for (var i=0; i<widgetsList.length; i++) 
{ 
    var widget = widgetsList[i]; 
    var jqID = "#" + widget.id; 

    var refreshInterval = $(jqID).attr("refreshInterval"); 
    if (refreshInterval == undefined) 
    refreshInterval = "30"; 

    $(jqID).data("refreshCounter", "0"); 
    var x = $(jqID).data("refreshCounter"); 
    ToLogger(" = widget[ " + widget.id + " ].refreshCounter(init1) = " + x); 

    var widgetObj = $(jqID); 
    jQuery.data(widgetObj, "refreshCounter", "0"); 
    x = jQuery.data(widgetObj, "refreshCounter"); 
    ToLogger(" = widget[ " + widget.id + " ].refreshCounter(init2) = " + x); 
} 

그러나 로그 출력에 나는 참조 :

DashboardInit: 1 widgets found. 
= widget[ Q.RecordCounters ].refreshInterval = 30 
= widget[ Q.RecordCounters ].refreshCounter(init1) = undefined 
= widget[ Q.RecordCounters ].refreshCounter(init2) = 0 

왜 '$ (jqID) .DATA ("refreshCounter을 ") '는'undefined '를 반환합니까? 한달 전에 정확히이 자바 스크립트 코드가 제대로 작동했습니다! 지금은 무엇이 잘못 될 수 있습니까? jQuery 1.7.2와 1.8.1로 시도했습니다. 동일한 방식으로 작동합니다. 브라우저가 업데이트되어있을 수 있습니까? (파이어 폭스 15.0)

다음 문제

- 심지어 jQuery.data (...)는 타이머 기능이 작동하지 않습니다

var timerLock = false; 
function OnTimer() 
{ 
    if (timerLock) return ; 
    timerLock = true; 
    for (var i=0; i<widgetsList.length; i++) 
    { 
    var widget = widgetsList[i]; 
    var jqID = "#" + widget.id; 
    var widgetObj = $(jqID); 
    var x = jQuery.data(widgetObj, "refreshCounter"); 
    var counter = parseInt(x); 
    ToLogger(" = widget[ " + widget.id + " ].refreshCounter = " + x + "/" + counter); 
    } 
} 

그러나 로그 출력은 내가 볼 :

= widget[ Q.RecordCounters ].refreshCounter = undefined/NaN 

왜 '정의되지 않았습니까?' .data ("refreshCounter")가 이전에 성공적으로 할당 된 경우 'undefined'가 아니어야한다고 가정합니다. 당신은 그것을 보았습니까 - 무엇이 잘못되었을 수 있습니까?

+0

'$ (jqID)'가 단일 요소를 반환합니까? 그것을 테스트하기 위해'.last()'를 추가해볼 수있다. –

+0

물론, $ (jqID)가 단일 요소 만 반환한다고 확신합니다. – user1250823

+0

여기에 아무런 위법이 없으며, 실제로 이런 종류의 문제가 될 수 있습니다. –

답변

0

나는 코멘트에서 당신이 점을 가지고 있음을 보았습니다. ' 객체 ID에. 당신은 여전히이 구문을 사용하여 해당 요소를 선택할 수 있습니다 난 당신이 내 대답은 도움 바랍니다 선택기는 $("[id='abc.456']")

될 것 ID가 'abc.456' 하자.

관련 문제