2012-09-12 37 views
2

我想添加一些額外的數據使用jQuerys .data()到一個下拉列表上的元素,下拉列表填充屬性和ID我想要在那裏,但是當我嘗試訪問數據顯示和未定義。我如何添加一個jQuery .data()屬性到一個下拉列表選項元素

人口代碼。

$.each(tutorArray, function(index, item){ 
     var TID= item.T.Id   
     $.each(item.T.TimeList, function(ind, i) { 
      $(ddl).append($('<option></option>').val(i.StartTime).html(i.StartTime + ' - ' + i.EndTime).data({ 
       TID: TID 
      })); 
     }); 
    }); 

接入碼

$(ddl).bind('change', function() { 
     if($(this).val() != '') { 

      var time = $(this).val(); 

      showConfirmRequestTutorCallDialogue(d, time, $(ddlDurationSelector).val(), $(this).data("TID"), $(ddlStudiesSelector).val()) 
     } 
    }); 

回答

0

所以從我的研究看來,這是不可能的.data()需要位於不在子部件上的元素上。所以它不能被附加到一個<option>元素

我所做的是將值包含在值字段中,然後在訪問值時將其分開。

集代碼

 var element = $('<option></option>'); 
     element.val(i.StartTime +"--" +TID).html(i.StartTime + ' - ' + i.EndTime); 

接入代碼

 var str = $(this).val(); 
     var substr = str.split('--'); 
     var time = substr[0]; 
     var TID = substr[1]; 
5

您應該設置data爲元素這種方式(see documentation):

element.data("someKey", someValue); 

所以,你的人口的代碼看起來是這樣的:

$.each(tutorArray, function(index, item){ 
    var TID= item.T.Id   
    $.each(item.T.TimeList, function(ind, i) { 
     var element = $('<option></option>'); 
     element.val(i.StartTime).html(i.StartTime + ' - ' + i.EndTime); 
     element.data("TID", TID); 
     $(ddl).append(element); 
    }); 
}); 
+0

我已經在改變了人口的代碼,但是當我去拿到數據返回它仍然顯示和未定義。 – TheAlbear

1

與已經改進型的解決方案表示方法

以爲它的幾個月裏,你問的問題後,我仍然認爲包括它,以便它可以幫助其他用戶查找類似問題。 我碰巧遇到類似的問題最近,我看到這個線程,並使用由Tadeck的答案設置使用jQuery下拉的數據值。

首先,數據值並沒有像你提到的那樣正確設置,但是後來我將這種方法分開並做了一些操作(參見下文),這些幫助我在jquery中設置/檢索數據值。

var element = $('<option></option>'); 
element.val('id').text('uiName'); 
$(element).data("type", 'mytype'); 

//這裏唯一的變化是,而不是做一個element.data(...)使用$這在某種程度上正好設置正確的價值觀,我可以叫我的元素作爲一個jQuery DOM元素現在檢索數據字段!

希望這可以幫助其他用戶面臨着類似的prolems

1

無需分割你的價值觀,你可以簡單地做。

var element = $(' <option data-type1="" data-type2=""></option>'); 

只需使用數據 - (任何財產)添加儘可能多的領域

集 - $(element).data("type1", yourValues);

GET - $("#dropdownID :selected").data("type1");

+0

var element = $(''); – kush

相關問題