Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将jQuery.data()属性添加到dropdownlist选项元素_Jquery_Html - Fatal编程技术网

如何将jQuery.data()属性添加到dropdownlist选项元素

如何将jQuery.data()属性添加到dropdownlist选项元素,jquery,html,Jquery,Html,我试图使用jQuerys.data()向下拉列表中的元素添加一些额外的数据,下拉列表正在填充属性,并且我想要的ID在那里,但是当我尝试访问时,数据显示出来并且未定义 人口编码 $.each(tutorArray, function(index, item){ var TID= item.T.Id $.each(item.T.TimeList, function(ind, i) { $(ddl).append($('<

我试图使用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
            }));
        });
    });  


我会尝试使用camel-case作为您的数据属性名称,因为文档显示HTML5在处理属性时在幕后发挥了一些神奇的作用。

您应该这样设置元素的
数据():

因此,您的人口代码可能如下所示:

$.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);
    });
});  
$。每个(tutorArray,函数(索引,项){
var TID=item.T.Id
$。每个(项目T.时间列表,功能(ind,i){
变量元素=$('');
element.val(i.StartTime).html(i.StartTime+'-'+i.EndTime);
要素数据(“TID”,TID);
$(ddl).append(元素);
});
});  

因此,从我的研究来看,.data()必须位于元素而不是子部分上,这是不可能的。因此它不能附加到
元素

我所做的是将数据包含在值字段中,然后在访问值时将其拆分

设置代码

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

采用上述方法修改版本的解决方案

虽然在你问这个问题几个月后,我还是想把它包括在内,这样它可以帮助其他用户查找类似的问题。 我最近碰巧遇到了一个类似的问题,我看到了这个线程,并使用Tadeck的答案使用jquery设置下拉列表的数据值

起初,数据值的设置也没有像您提到的那样正确,但后来我改变了方法并做了一些事情(见下文),帮助我在jquery中设置/检索数据值

var element = $('<option></option>');  
element.val('id').text('uiName');  
$(element).data("type", 'mytype');
var元素=$('');
元素。val('id')。text('uiName');
$(元素)。数据(“类型”,“mytype”);
//这里唯一的变化是,我没有使用element.data(…),而是使用$将该元素称为jquery dom元素,这碰巧设置了正确的值,现在我也可以检索数据字段了


希望这可能会帮助其他面临类似问题的用户

无需拆分您的值,您只需这样做即可

var element = $(' <option data-type1="" data-type2=""></option>');
var元素=$('');
只需使用数据(任意属性)添加尽可能多的字段

设置-
$(元素)。数据(“类型1”,值)


获取-
$(“#dropdownID:selected”).data(“type1”)

我已经更改了填充代码,但是当我去取回数据时,它仍然显示并且未定义。var元素=$('');
        var str = $(this).val();
        var substr = str.split('--');
        var time = substr[0];
        var TID = substr[1];
var element = $('<option></option>');  
element.val('id').text('uiName');  
$(element).data("type", 'mytype');
var element = $(' <option data-type1="" data-type2=""></option>');