我有一个这样的列表: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可以工作,但是第二个不能正确放置数字
答案 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)