Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用属性选择器从数据属性vis查找关键字_Jquery_Search_Attributes_Find_Selector - Fatal编程技术网

Jquery 使用属性选择器从数据属性vis查找关键字

Jquery 使用属性选择器从数据属性vis查找关键字,jquery,search,attributes,find,selector,Jquery,Search,Attributes,Find,Selector,我尝试通过使用jQuery和attr选择器来执行搜索筛选功能,如 $('p[data-keywords~="'+keywords+'"]') $('p[data-keywords*="'+keywords+'"]') 我的完整代码: function search(keywords) { $('p').removeClass('match'); $('p[data-keywords~="'+keywords+'"]').addClass('match'); $('p[

我尝试通过使用jQuery和attr选择器来执行搜索筛选功能,如

$('p[data-keywords~="'+keywords+'"]')
$('p[data-keywords*="'+keywords+'"]')
我的完整代码:

function search(keywords) {
    $('p').removeClass('match');

    $('p[data-keywords~="'+keywords+'"]').addClass('match');
    $('p[data-keywords*="'+keywords+'"]').addClass('match');
}


var search_timer;
$("#search").keyup(function() {
    var keywords = $(this).val();
    clearTimeout(search_timer);
    search_timer=setTimeout(function(){
        search(keywords);
    },1000);
});
看起来不错

但是当数据是
数据关键字=“一二三”

当我把
one-three
放入搜索时,它没有找到

操场:

有什么想法吗?或者更好的主意请告诉我


PS:将找不到具有另一个随机关键字(如
one xxx
)的关键字

您的查询将搜索精确匹配,即“one-two-three”中不存在“one-three”

jQuery有一个漂亮的多属性语法,您可以使用它:

因此,首先在空格上拆分字符串,然后创建如下选择器:

$('p[data-keywords~="one"][data-keywords~="three"]').addClass('match');

尝试按空格拆分关键字:

function search(keywords) {
    $('p').removeClass('match');

    var keywords = keywords.split(' ');
    for (var i = 0, l = keywords.length; i < l; i++) {
         $('p[data-keywords*="'+keywords[i]+'"]').addClass('match');
    }
}
函数搜索(关键字){
$('p').removeClass('match');
var关键字=关键字。拆分(“”);
对于(var i=0,l=keywords.length;i

好主意,不管怎样,当我搜索
一个xxx
时将找不到,你能帮助我吗?@Gautam3164
onethree
只是一个关键字,所以它不应该选择其中包含
onethree
的行。不,你可以看到onethree数据关键字我的搜索函数没有非常固定的规则,如果有人告诉我更好的想法,我会考虑:D@l2aelba如果您搜索
one xxx
,所有带有关键字
one
xxx
的行都将匹配。@l2aelba您希望“one xxx”结果匹配吗,是还是否?nei:D,因为xxx是另一个词,不会被找到,这很有效,但我使用
。not()
所以在我的真实案例中添加类,不管怎样,现在一切都好了:D