我有一个搜索输入字段,我在其中搜索li
中的数据元素<li class="list_items" data-search-term="annuál plánt accidénts ">
<div class="row">
<div class="col-xs-2 col-md-1"></div>
<div class="col-xs-10 col-md-11">
<div class="item">
<div class="item-title">Annuál Plánt Accidénts<span class="pull-right"><input type="checkbox" value="Annuál Plánt Accidénts" name="checkbox"></span></div>
</div>
</div>
</div>
</li>
<li class="list_items" data-search-term="chiller output temperature ">
<div class="row">
<div class="col-xs-2 col-md-1"></div>
<div class="col-xs-10 col-md-11">
<div class="item">
<div class="item-title">Chiller Output Temperature<span class="pull-right"><input type="checkbox" value="Chiller Output Temperature" name="checkbox"></span></div>
</div>
</div>
</div>
</li>
如果我输入1.2.3.4
,那么万一我无法识别&#39; jQuery中的错误。这是代码:
$('.live-search-box').on('keyup', function() {
$("#del").show();
var searchTerm = $(this).val().toLowerCase();
// alert(searchTerm);
$('.live-search-list li').each(function() {
if ($(this).filter('[data-search-term *= ' + searchTerm + ']').length > 0 || searchTerm.length < 1) { //alert('if'); $(this).show(); } else { //alert('else'); $(this).hide(); } }); });
});
}
错误:语法错误,无法识别的表达式:[data-search-term * = 1.23.4]
答案 0 :(得分:1)
首先,您的jQuery代码存在一些语法问题以及不匹配的括号和大括号。
错误是因为您需要将您提供的值包装在引号中的属性选择器中,因为它包含将被解释为类选择器的.
个字符。您还可以单独使用filter()
隐藏/显示相关元素而不进行循环来简化代码。试试这个:
$('.live-search-box').on('keyup', function() {
$("#del").show();
var searchTerm = $(this).val().toLowerCase();
$('.live-search-list li').hide().filter('[data-search-term*="' + searchTerm + '"]').show();
});