gpt4 book ai didi

javascript - 搜索过滤器上的 jquery - 如果没有

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:41 25 4
gpt4 key购买 nike

这段代码工作正常,但问题是 optgroup 好像没有找到结果 option 得到 $.wrap() 但我是如果未找到结果,则无法包装 optgroup

$('.search').on('keyup keydown', function(){
searchFilter($(this).val());
});

function searchFilter(value){
$('option').each(function(){
if($(this).text().toLowerCase().indexOf(value.toLowerCase()) >= 0){
$(this).removeClass('hidden');
$(this).removeAttr('disabled');

if($(this).parent().is('span')){
$(this).unwrap('<span>');
}
}else{
$(this).addClass('hidden');
$(this).prop('disabled', true);

if(!$(this).parent().is('span')){
$(this).wrap('<span>');
}
}
});
}
.hidden{
display: none !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" class="search" />

<div class="row">
<select multiple style="width: 150px;height:200px" id="search">
<optgroup label="test01">
<option>car</option>
<option>bike</option>
<option>cycle</option>
</optgroup>
<optgroup label="test02">
<option>orange</option>
<option>apple</option>
<option>pineapple</option>
</optgroup>
</select>
</div>

最佳答案

隐藏optgroupsoptions可能不是要走的路,即使包装在 span 中也是如此.包装在 <span style="disaply:none">当我在 Safari 移动版中测试它时不起作用。

更好的选择是从下拉列表中删除不需要的元素。在执行此操作时,您需要创建原始下拉列表的克隆,以便记录初始状态。

$(document).ready(function() {
//Add a hidden clone
var clone = $("#fancy").clone(true);
clone.attr("id", "fancy_clone");
clone.css("display", "none");
$("body").append(clone);

$('.search').on('keyup', function() {
searchFilter($(this).val());
});

function searchFilter(value) {
//Need a working clone - keep our clone as the original record
var workingClone = $("#fancy_clone").clone(true);
$("#fancy").empty();

//Remove unwanted options
$(workingClone).find("option").each(function() {
if ($(this).val().toLowerCase().indexOf(value.toLowerCase()) === -1) {
var thisParent = $(this).parents("optgroup");
$(this).remove();

//remove optgroup if it is empty
if ($(thisParent).children("option").length === 0) {
$(thisParent).remove();
}
}
});

//UPdate the actual select
$("#fancy").append($(workingClone).html());
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<input type="text" class="search" />
<select id="fancy">
<optgroup label="test01">
<option value="car">car</option>
<option value="bike">bike</option>
<option value="cycle">cycle</option>
</optgroup>
<optgroup label="test02">
<option value="orange">orange</option>
<option value="apple">apple</option>
<option value="pinapple">pineapple</option>
</optgroup>
</select>

关于javascript - 搜索过滤器上的 jquery - 如果没有 <option> 匹配 [Safari 浏览器],则换行 <optgroup>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55102940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com