子级和父级数据元素存在问题

时间:2018-11-15 20:53:20

标签: javascript jquery

我有一个这样的列表:101,102,104

<select>
<option value="100" data-parent="" data-childrens="">Text1</option>
<option value="101" data-parent="" data-childrens="">Text2</option>
<option value="102" data-parent="" data-childrens="">Text3</option>
<option value="103" data-parent="" data-childrens="">Text4</option>
<option value="104" data-parent="" data-childrens="">Text5</option>
</select>


<select>
<option value="100" data-parent="" data-childrens="">Text1</option>
<option value="101" data-parent="" data-childrens="101">Text2</option>
<option value="102" data-parent="102" data-childrens="">Text3</option>
<option value="103" data-parent="" data-childrens="">Text4</option>
<option value="104" data-parent="" data-childrens="104">Text5</option>
</select>

如果我选择任何值,并且孩子们应该像这样出现,我希望它是这样的:

这样尝试

var arr = $("#list1").val().split(',');
                            $.each(arr ,function(i,val) {
                                if(val == $("#sc option:selected").val()) {
                                    $("#sc option:selected").attr('data-parent',val);   
                                }
                                if(val.indexOf($("#sc option").val()) != -1) {
                                    $("#sc option").attr('data-childrens',val); 
                                }
                            });

第一个if可以工作,但是第二个不能正确放置数字

1 个答案:

答案 0 :(得分:0)

执行val.indexOf($("#sc option").val())时遇到的问题是,它将始终仅获取第一个<option>的值,而不检查其他任何值


您可以创建一个属性选择器,例如:

 $("#sc option[value=" + val + "]").attr('data-childrens',val); 

或使用filter()

 $("#sc option").filter(function(){
     return this.value === val
 }).attr('data-childrens',val)