Jquery optselect 所选插件的过滤结果
Jquery filter result from optselect chosen plugin
我很累得到这种形式的结果
job=online,print&music=tribal
单击我的表单上的按钮后:
选择了插件,但我没有找到任何解决方案来以这种方式获得结果,所以我想过滤 html 是唯一的方法。
这是一个示例
<ul class="chosen-results">
<li class="group-result">Job</li>
<li class="result-selected group-option" style="" data-option-array-index="2">Online</li>
<li class="group-option" style="" data-option-array-index="3">Dj</li>
<li class="result-selected group-option" style="" data-option-array-index="4">Print</li>
<li class="active-result group-option" style="" data-option-array-index="5">Navy</li>
<li class="group-result">Music</li>
<li class="active-result group-option" style="" data-option-array-index="7">Jazz</li>
<li class="active-result group-option" style="" data-option-array-index="8">Rock</li>
<li class="active-result group-option" style="" data-option-array-index="9">House</li>
<li class="result-selected group-option" style="" data-option-array-index="10">Tribal</li>
</ul>
请帮忙。
谢谢
您可以找到选项值及其 optgroup
标签,如下所示:
$("select").change(function(){
var selected = $(this).val()
var selectedTitlte = $(this).find("option:selected").closest("optgroup").attr("label");
$("p").html(selectedTitlte + ":" + selected);
});
更新
对于多个你可以这样做:
$("select").change(function(e){
var select = $(this);
var multiArray = $(this).val();
var lastValue;
setTimeout(function(){
lastValue = multiArray.reverse()[0]
var findCurrentTitle = select.find("option[data-text='"+lastValue+"']").closest("optgroup").attr("label");;
$("p").append(findCurrentTitle + ":" + lastValue+"<br/>");
},100);
});
更新
修复了所选内容多次出现并修复了删除问题:
$('body').on("click", ".chosen-drop li.group-option", function() {
$(".results").append("<div data-target='"+$(this).text()+"'>"+$(this).prevAll(".group-result:first").text() + ":" + $(this).text()+"</div>");
});
$('select').on('change', function(event, params) {
if(params.deselected != undefined){
$("div[data-target='"+params.deselected+"']").remove();
}
})
我很累得到这种形式的结果
job=online,print&music=tribal
单击我的表单上的按钮后:
选择了插件,但我没有找到任何解决方案来以这种方式获得结果,所以我想过滤 html 是唯一的方法。
这是一个示例
<ul class="chosen-results">
<li class="group-result">Job</li>
<li class="result-selected group-option" style="" data-option-array-index="2">Online</li>
<li class="group-option" style="" data-option-array-index="3">Dj</li>
<li class="result-selected group-option" style="" data-option-array-index="4">Print</li>
<li class="active-result group-option" style="" data-option-array-index="5">Navy</li>
<li class="group-result">Music</li>
<li class="active-result group-option" style="" data-option-array-index="7">Jazz</li>
<li class="active-result group-option" style="" data-option-array-index="8">Rock</li>
<li class="active-result group-option" style="" data-option-array-index="9">House</li>
<li class="result-selected group-option" style="" data-option-array-index="10">Tribal</li>
</ul>
请帮忙。
谢谢
您可以找到选项值及其 optgroup
标签,如下所示:
$("select").change(function(){
var selected = $(this).val()
var selectedTitlte = $(this).find("option:selected").closest("optgroup").attr("label");
$("p").html(selectedTitlte + ":" + selected);
});
更新
对于多个你可以这样做:
$("select").change(function(e){
var select = $(this);
var multiArray = $(this).val();
var lastValue;
setTimeout(function(){
lastValue = multiArray.reverse()[0]
var findCurrentTitle = select.find("option[data-text='"+lastValue+"']").closest("optgroup").attr("label");;
$("p").append(findCurrentTitle + ":" + lastValue+"<br/>");
},100);
});
更新
修复了所选内容多次出现并修复了删除问题:
$('body').on("click", ".chosen-drop li.group-option", function() {
$(".results").append("<div data-target='"+$(this).text()+"'>"+$(this).prevAll(".group-result:first").text() + ":" + $(this).text()+"</div>");
});
$('select').on('change', function(event, params) {
if(params.deselected != undefined){
$("div[data-target='"+params.deselected+"']").remove();
}
})