2014-12-08 57 views
3

我有一個基本的只有前端的web應用程序,點擊一個按鈕,GET請求被髮送到Foursquare API,然後AJAX將一些請求的響應數據存儲到div中,如下所示:如何正確使用JQuery hasData()?

checkinsCount[i] = data.response.venues[i].stats.checkinsCount; 
$("#fs_results").data("checkinsCount", checkinsCount); 
d = $("#fs_results").data("checkinsCount"); 
console.log(d); 

然後我有一個複選框,我希望在單擊複選框時在div中顯示數據,但只有在驗證數據已存在後才能顯示數據。

所以我想使用jQuery的.hasData()進行檢查:

$('#checkbox1').click(function() { 
if($.hasData($('#fs_results'))){ 
    $("#fs_results").toggle(this.checked); 
} else{ 
    alert("false"); 
    $('#checkbox1').attr('checked', false); 

} 
}); 

但是現在,我剛開假警報反覆,甚至當我已經驗證了數據存在。我迷路了,因爲這是我第一次使用jQuery/AJAX ...任何幫助或建議?

回答

2

hasData對我相信的單個元素進行操作(請參閱docs),您正在傳遞查詢結果。

因此與

if($.hasData($('#fs_results')[0])){

替換

if($.hasData($('#fs_results'))){

應該解決的問題。另外,您應該在複選框上使用prop()而不是attr()

+0

這樣做。謝謝! prop()和attr()之間的確切區別是什麼? – blunatic 2014-12-08 04:05:50

+0

attr引用HTML呈現時設置的屬性,因此是標記的實際文本。 prop是基於用戶或程序變更的財產的動態價值。嚴格來說,元素渲染後attr不應該改變。 jQuery改變了他們在1.4版本中的處理方式,並打破了很多網站,所以更好地堅持道具 – Born2Code 2014-12-08 13:36:49