2012-09-27 30 views
1

我有下面的代碼,我設置jQuery的動態添加的選擇時。數據()是未定義

function showCountries(data) 
{ 
    for(var i in data) 
    { 
     var li = document.createElement('li'); 
     $(li).html('<a>' + i + '</a><span>&gt;</span>'); 
     $(li).data('cargo', { state: data[i] }); 
     /* 
      right here, if I look at $(li).data('cargo').state in the debugger 
      I see the data as expected 
     */ 
     $('#countries').append(li); 
     $(li).on('click', $.proxy(countrySelected, li)); 
    } 
} 

後來Li元素上的一些任意的數據,在選定的國家,我想要得到的貨物數據。但是,這是不明確的

function countrySelected() 
{ 
    var country = $(this).children('a').html(); 
    // country is what I expect 

    var cargo = $(this).children('a').data('cargo'); 
    // cargo is undefined here 

    // I tried this too: 
    var cargo = $('#countries li.selected a').data('cargo'); 
    // cargo is undefined here as well 
} 

我做錯了什麼?這是在加載頁面後動態設置.data()的問題嗎?

感謝, 斯科特

回答

5

這條線:

var cargo = $(this).children('a').data('cargo'); 

應該改成這樣:

var cargo = $(this).data('cargo'); 

您可以設置在li元素中的數據,而不是在孩子a

4

您設置li元素,而不是a元素上的數據。

var cargo = $(this).data('cargo'); 
相關問題