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
,这是苹果奶奶史密斯的子字符串