2012-09-04 33 views
2

下面是一些HTML頁面Javascript代碼我工作:爲什麼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)。數據(「refreshCounter 「)'返回'undefined'? 一個月前正是這個JavaScript代碼工作正常!現在有什麼可能是錯誤的? 我已經用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」)被成功分配,那麼我認爲它不能是'未定義'。 您是否看到 - 可能會出現什麼問題?

+0

你確定'$(jqID)'會返回一個元素嗎?你可以嘗試添加'.last()'來測試。 –

+0

是的,當然我確定$(jqID)只返回一個元素。 – user1250823

+0

這裏沒有冒犯,它可能是真正導致這種情況的問題。 –

回答

0

我在評論中看到你有一個點''。在對象ID中。您仍然可以使用此語法選擇元素: 讓ID來'abc.456' 的選擇將是$("[id='abc.456']")

我希望你會發現我的答案有幫助。