Javascript jquery在使用数据选择器之后的执行方式是否与在使用文本选择器之后的执行方式不同?

Javascript jquery在使用数据选择器之后的执行方式是否与在使用文本选择器之后的执行方式不同?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,这似乎是一个奇怪的问题,但看看我的代码: $(窗口).load(函数(){ $('.zichtbaar').addClass('verborgen').removeClass('zichtbaar'); $('#zoekitem').focus(); $('.letter')。在('click',function()上{ $('.zichtbaar').addClass('verborgen').removeClass('zichtbaar'); var letter=$(this.text(

这似乎是一个奇怪的问题,但看看我的代码:

$(窗口).load(函数(){
$('.zichtbaar').addClass('verborgen').removeClass('zichtbaar');
$('#zoekitem').focus();
$('.letter')。在('click',function()上{
$('.zichtbaar').addClass('verborgen').removeClass('zichtbaar');
var letter=$(this.text();
var klasse=“字母-”+字母;
变量el=$('..+klasse);
$('#alfabet header').html(字母).addClass('zichtbaar').removeClass('verborgen');
el.addClass('zichtbaar')。removeClass('verborgen');
});
$('#zoekitem')。在('单击',函数()上){
$(this.val(“”);
var zoekwoord=“”;
});
$('button')。在('click',function()上{
$('.zichtbaar').addClass('verborgen').removeClass('zichtbaar');
$('#zoek header').html('Zoekresultaten voor:');
$('zoek header').addClass('verborgen').removeClass('zichtbaar');
var zoekwoord=$('#zoekitem').val().toLowerCase();
var lengte=zoekwoord.length;
如果(长度>0){
$('#zoek header')。追加(“+zoekwoord”);
$('#zoek header').addClass('zichtbaar').removeClass('verborgen');
var nGevonden=0;
$('.inhoud')。每个(函数(){
var el=$(本);
var gevodentekst=el.data('zoekwoorden').toLowerCase();
如果(Gevondendekst.search(zoekwoord)>-1){
nGevonden++;
el.addClass('zichtbaar')。removeClass('verborgen');
}
});
警报(nGevonden);
如果(nGevonden==0){
$('.niets gevonden').addClass('zichtbaar').removeClass('verborgen');
}
}
zoekwoord='';
$('#zoekitem').val('');
});
});
#zoekitem{
字体大小:1.3em;
}
#信头{
高度:32px;
颜色:皇家蓝;
字号:1.5em;
字体大小:粗体;
溢出:隐藏;
}
.信{
浮动:左;
宽度:3.7037037%;
光标:指针;
文本对齐:居中;
}
#阿尔法贝头球,
#zoek割台{
字号:3em;
字体大小:粗体;
}
#zoek割台{
边缘底部:5px;
}
英胡德先生{
剩余利润:10%
}
韦博根先生{
显示:无;
}

佐克

A. B C D E F G H 我 J K L M N O P Q R s T U v W X Y Z 0-9
Zoekresultaten voor: 尼特斯·格沃登
您的
每个()
循环始终执行,并且除了从中读取值之外,way
data()
text()
之间没有逻辑上的差异

您的问题只是因为并非所有
.verborgen
元素都具有
data
属性。因此,当您试图读取它时,它是未定义的。对
未定义的
值调用
toLowerCase()
search()
会引发错误,您可以在控制台中看到<代码>文本()
之所以有效,是因为所有这些元素都具有innerText值

要解决此问题,请为
数据
属性提供一个默认值,如下所示:

var gevondenTekst = (el.data('zoekwoorden') || '').toLowerCase(); 
$(窗口).load(函数(){
$('.zichtbaar').addClass('verborgen').removeClass('zichtbaar');
$('#zoekitem').focus();
$('.letter')。在('click',function()上{
$('.zichtbaar').addClass('verborgen').removeClass('zichtbaar');
var letter=$(this.text();
var klasse=“字母-”+字母;
变量el=$('..+klasse);
$('#alfabet header').html(字母).addClass('zichtbaar').removeClass('verborgen');
el.addClass('zichtbaar')。removeClass('verborgen');
});
$('#zoekitem')。在('单击',函数()上){
$(this.val(“”);
var zoekwoord=“”;
});
$('button')。在('click',function()上{
$('.zichtbaar').addClass('verborgen').removeClass('zichtbaar');
$('#zoek header').html('Zoekresultaten voor:');
$('zoek header').addClass('verborgen').removeClass('zichtbaar');
var zoekwoord=$('#zoekitem').val().toLowerCase();
var lengte=zoekwoord.length;
如果(长度>0){
$('#zoek header')。追加(“+zoekwoord”);
$('#zoek header').addClass('zichtbaar').removeClass('verborgen');
var nGevonden=0;
$('.inhoud')。每个(函数(){
var el=$(本);
var gevondenTekst=(el.data('zoekwoorden')| |').toLowerCase();
如果(Gevondendekst.search(zoekwoord)>-1){
nGevonden++;
el.addClass('zichtbaar')。removeClass('verborgen');
}
});
警报(nGevonden);
如果(nGevonden==0){
$('.niets gevonden').addClass('zichtbaar').removeClass('verborgen');
}
}
zoekwoord='';
$('#zoekitem').val('');
});
});
#zoekitem{
字体大小:1.3em;
}
#信头{
高度:32px;
颜色:皇家蓝;
字号:1.5em;
字体大小:粗体;
溢出:隐藏;
}
.信{
浮动:左;
宽度:3.7037037%;
光标:指针;
文本对齐:居中;
}
#阿尔法贝头球,
#zoek割台{
字号:3em;
字体大小:粗体;
}
#zoek割台{
边缘底部:5px;
}
英胡德先生{
剩余利润:10%
}
韦博根先生{
显示:无;
}

佐克

A. B C D E F G H 我 J K L M N O P Q R s T U v W X Y Z 0-9
Zoekresultaten voor: 尼特斯·格沃登
谢谢。我对此困惑了5天。