Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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
Javascript 使用jQuery同时搜索.text()和data-attribute_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery同时搜索.text()和data-attribute

Javascript 使用jQuery同时搜索.text()和data-attribute,javascript,jquery,Javascript,Jquery,我有一个搜索框: <input id="box" type="text" /> 问题是,它只搜索.text(),但我希望它也搜索数据alt name,以便显示它是否匹配其中任何一个。我已经试过使用$(this).attr(“data alt name”),但由于某些原因,它不起作用 非常感谢任何帮助或提示:)尝试使用data()方法: $(this).data("alt-name") 这对数据属性非常有效,并将返回第二个值以执行搜索。尝试使用data()方法: $(this).d

我有一个搜索框:

<input id="box" type="text" />
问题是,它只搜索
.text()
,但我希望它也搜索
数据alt name
,以便显示它是否匹配其中任何一个。我已经试过使用
$(this).attr(“data alt name”)
,但由于某些原因,它不起作用

非常感谢任何帮助或提示:)

尝试使用
data()
方法:

$(this).data("alt-name")
这对数据属性非常有效,并将返回第二个值以执行搜索。

尝试使用
data()
方法:

$(this).data("alt-name")

这对数据属性非常有效,并将返回第二个值以执行搜索。

您也可以尝试使用

this.attributes["data-alt-name"].value

这也将提高性能

您也可以尝试

this.attributes["data-alt-name"].value

这也将提高性能

这里是一个使用
$(This.data(“alt name”)

$('#box').keyup(函数(){
var valThis=$(this.val().toLowerCase();
如果(valThis==“”){
$('.list>.list\u item').show();
}否则{
$('.list>.list\u item')。每个(函数(){
var text=($(this.text()+$(this.data)(“alt name”)).toLowerCase();
if(text.indexOf(valThis)>=0){
$(this.show())
}否则{
$(this.hide();
}
});
};
});
。列出项目{
显示:块;
}

苹果
橙色
甜瓜

这里是一个使用
$(this.data(“alt name”)

$('#box').keyup(函数(){
var valThis=$(this.val().toLowerCase();
如果(valThis==“”){
$('.list>.list\u item').show();
}否则{
$('.list>.list\u item')。每个(函数(){
var text=($(this.text()+$(this.data)(“alt name”)).toLowerCase();
if(text.indexOf(valThis)>=0){
$(this.show())
}否则{
$(this.hide();
}
});
};
});
。列出项目{
显示:块;
}

苹果
橙色
甜瓜

您可以使用以下选项代替显示/隐藏:

:其中显示可以为true以显示元素,也可以为false以隐藏元素

您可以更改:

var text = $(this).text().toLowerCase();
if (text.indexOf(valThis) >= 0) {
   $(this).show()
} else {
   $(this).hide();
}
与:

$('#box')。在('input',函数(e)上{
var valThis=$(this.val().toLowerCase();
如果(valThis==“”){
$('.list>.list\u item').show();
}否则{
$('.list>.list\u item')。每个(函数(){
var text=($(this.text().toLowerCase()+$(this.data('altName')).tolocalLowercase();
$(this).toggle(text.indexOf(valThis)!=-1);
});
};
});

苹果
橙色
甜瓜

您可以使用以下选项代替显示/隐藏:

:其中显示可以为true以显示元素,也可以为false以隐藏元素

您可以更改:

var text = $(this).text().toLowerCase();
if (text.indexOf(valThis) >= 0) {
   $(this).show()
} else {
   $(this).hide();
}
与:

$('#box')。在('input',函数(e)上{
var valThis=$(this.val().toLowerCase();
如果(valThis==“”){
$('.list>.list\u item').show();
}否则{
$('.list>.list\u item')。每个(函数(){
var text=($(this.text().toLowerCase()+$(this.data('altName')).tolocalLowercase();
$(this).toggle(text.indexOf(valThis)!=-1);
});
};
});

苹果
橙色
甜瓜

另一个简单的解决方案是搜索外部HTML

var text = $(this)[0].outerHTML

另一个简单的解决方案是搜索外部HTML

var text = $(this)[0].outerHTML

按文本选择是不愉快的。我想退一步,在绑定
keyup
处理程序之前,创建一个新的
data-
属性,该属性包含所需的文本

var els = $(".list > .list__item").text(function(i, txt) {
  this.setAttribute("data-text", txt.trim().toLowerCase());
  this.setAttribute("data-alt-name", this.dataset.altName.toLowerCase());
  return txt;
});
然后,您可以干净地使用选择引擎

$('#box').keyup(function() {
  var valThis = this.value.trim().toLowerCase();

  if (valThis == "") {
    els.show();
  } else {
    els.hide()
      .filter(`[data-text*='${valThis}'], [data-alt-name*='${valThis}']`)
      .show();
  };
});

完整演示:

var els=$(“.list>.list\u item”).text(函数(i,txt){
此.setAttribute(“数据文本”,txt.trim().toLowerCase());
this.setAttribute(“data alt name”,this.dataset.altName.toLowerCase());
返回txt;
});
$('#box').keyup(函数(){
var valThis=this.value.trim().toLowerCase();
如果(valThis==“”){
els.show();
}否则{
els.hide()
.filter(`[data text*='${valThis}'],[data alt name*='${valThis}']`)
.show();
};
});

苹果
橙色
甜瓜

按文本选择是不愉快的。我想退一步,在绑定
keyup
处理程序之前,创建一个新的
data-
属性,该属性包含所需的文本

var els = $(".list > .list__item").text(function(i, txt) {
  this.setAttribute("data-text", txt.trim().toLowerCase());
  this.setAttribute("data-alt-name", this.dataset.altName.toLowerCase());
  return txt;
});
然后,您可以干净地使用选择引擎

$('#box').keyup(function() {
  var valThis = this.value.trim().toLowerCase();

  if (valThis == "") {
    els.show();
  } else {
    els.hide()
      .filter(`[data-text*='${valThis}'], [data-alt-name*='${valThis}']`)
      .show();
  };
});

完整演示:

var els=$(“.list>.list\u item”).text(函数(i,txt){
此.setAttribute(“数据文本”,txt.trim().toLowerCase());
this.setAttribute(“data alt name”,this.dataset.altName.toLowerCase());
返回txt;
});
$('#box').keyup(函数(){
var valThis=this.value.trim().toLowerCase();
如果(valThis==“”){
els.show();
}否则{
els.hide()
.filter(`[data text*='${valThis}'],[data alt name*='${valThis}']`)
.show();
};
});

苹果
橙色
甜瓜

text=($(this.text()+''+$(this.data('altName')).toLowerCase()
可以吗?免责声明:它可以命中字符串的结果,例如
le gra
,它是
苹果奶奶史密斯的子字符串($(this.text()+''+$(this.data('altName')).toLowerCase()
可以吗?免责声明:它可以命中字符串的结果,如
le gra
,这是
苹果奶奶史密斯的子字符串