2

jQuerys .data()を使用してドロップダウンリストの要素にデータを追加しようとしています。ドロップダウンリストにはプロパティが入力されており、必要なIDがありますが、アクセスしようとすると、データが表示され、未定義になります。

人口コード。

 $.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())
        }
    });
4

5 に答える 5

5

dataこの方法で要素を設定する必要があります(ドキュメントを参照):

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);
    });
});  
于 2012-09-12T16:06:22.773 に答える
1

http://api.jquery.com/data/#data-html5

ドキュメントには、属性を処理するときにhtml 5が舞台裏で何らかの魔法を行っていることが示されているため、データ属性名にキャメルケースを使用してみます。

于 2012-09-12T16:03:12.823 に答える
1

すでに述べたアプローチの修正版によるソリューション

あなたが質問してから数ヶ月経ちましたが、他のユーザーが同様の問題を探しているときに役立つように、それを含めることを考えました. 私は最近、同様の問題に遭遇しました。このスレッドを見て、Tadeck の回答を使用して、jquery を使用してドロップダウンのデータ値を設定しました。

あなたが言及したように、最初はデータ値が適切に設定されていませんでしたが、その後、アプローチを微調整して、jqueryでデータ値を設定/取得するのに役立つ何か(以下を参照)を実行しました。

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

// ここでの唯一の変更点は、element.data(...) を実行する代わりに、$ を使用して要素を jquery dom 要素として呼び出し、何らかの理由で値を適切に設定することで、データ フィールドも取得できるようになったことです。 !

これが同様の問題に直面している他のユーザーに役立つことを願っています

于 2013-05-10T11:26:38.380 に答える
1

値を分割する必要はありません。簡単に行うことができます。

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

data-(任意のプロパティ) を使用して、できるだけ多くのフィールドを追加するだけです

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

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

于 2015-07-09T19:41:41.017 に答える
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];
于 2012-09-13T09:41:14.033 に答える