Bra*_*ane 4 jquery json jquery-select2
我怎样才能id从optgroup在选择子元素?例如,如果您使用这种 JSON 来创建select2:
var data = [{
id: p0,
text: 'enhancement',
children: [{
id: c5,
text: 'enhancement child1'
},{
id: c6,
text: 'enhancement child2'
}]
},{
id: c1,
text: 'bug'
},{
id: c2,
text: 'duplicate'
},{
id: c3,
text: 'invalid'
},{
id: c4,
text: 'wontfix'
}];
Run Code Online (Sandbox Code Playgroud)
并且 using$("#select2").val();只会从选定项目中检索 id,那么optgroups可以通过哪种方式检索所有父id?(对于所选enhancement child1项目,返回的数据是id=c5和id=p0)
任何建议和方向如何解决这个问题?
根据我的研究,optgroup在进行选择时没有直接收集id 的方法。这是生成的 HTML:
<select class="js-example-data-array select2-hidden-accessible" tabindex="-1" aria-hidden="true">
<optgroup label="enhancement">
<option value="c5">enhancement child1</option>
<option value="c6">enhancement child2</option>
</optgroup>
<option value="c1">bug</option>
<option value="c2">duplicate</option>
<option value="c3">invalid</option>
<option value="c4">wontfix</option>
</select>
Run Code Online (Sandbox Code Playgroud)
编辑
经进一步检查,DOM对html body.forceShow select.js-example-data-array.select2-hidden-accessible optgroup确实有一个value的p0。仍在尝试根据特定选择找出如何收集此信息。
您可以将此详细信息添加到数据中,然后将其取出。示例:https : //jsfiddle.net/Twisty/rfn5p18x/4/
HTML
<select class="js-example-data-array">
</select>
<select class="js-example-data-array-selected">
<option value="2" selected="selected">duplicate</option>
</select>
<div id="results">
</div>
Run Code Online (Sandbox Code Playgroud)
查询
var data = [{
id: 'p0',
text: 'enhancement',
children: [{
id: 'c5',
text: 'enhancement child1',
parent: 'p0'
}, {
id: 'c6',
text: 'enhancement child2',
parent: 'p0'
}]
}, {
id: 'c1',
text: 'bug'
}, {
id: 'c2',
text: 'duplicate'
}, {
id: 'c3',
text: 'invalid'
}, {
id: 'c4',
text: 'wontfix'
}];
$(document).ready(function() {
$(".js-example-data-array").select2({
data: data
});
$(".js-example-data-array").on("select2:select", function(e) {
if (e.params.data.parent.length) {
console.log(e.params.data.parent + " > " + e.params.data.id + " selected");
} else {
console.log(e.params.data.id + " selected");
}
});
$(".js-example-data-array-selected").select2({
data: data
});
});
Run Code Online (Sandbox Code Playgroud)
您现在可以看到数据包含对父项的引用,现在可以在选择选项时访问。它将不可用,.val()但您可以在选择时将其存放在其他地方或修改.val()以包含它。
编辑固定
能够optgroup从$("option:selected").parent("optgroup").val();. 工作示例:https : //jsfiddle.net/Twisty/rfn5p18x/7/
查询
var data = [{
id: 'p0',
text: 'enhancement',
children: [{
id: 'c5',
text: 'enhancement child1',
}, {
id: 'c6',
text: 'enhancement child2',
}]
}, {
id: 'c1',
text: 'bug'
}, {
id: 'c2',
text: 'duplicate'
}, {
id: 'c3',
text: 'invalid'
}, {
id: 'c4',
text: 'wontfix'
}];
$(document).ready(function() {
$(".js-example-data-array").select2({
data: data
});
$(".js-example-data-array").on("select2:select", function(e) {
var pID = $("option:selected").parent("optgroup").val();
if (typeof pID !== "undefined") {
$("#results").append("Parent: " + pID + "<br />\r\n");
}
$("#results").append("Value: " + $(this).val() + "<br />\r\n");
});
$(".js-example-data-array-selected").select2({
data: data
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4617 次 |
| 最近记录: |