jQuery 如何在不改变任何一个的情况下匹配两个文本字符串?
另一个新手问题...
脚本(如下)将一个 div 中的选定文本与另一个 div 中的某些目标文本进行比较,然后将样式应用于第二个 div 的父级。我需要将脚本更改为不那么字面意义——而不是“如果选择了 A,则查找 A”;而是“如果选择了苹果,则寻找 A”。
那么,如何让 jQuery 将两个不同的文本字符串识别为同一事物呢?我尝试了“var A = 'Apples', B = 'Bravo' [etc] ;”,但是当我将鼠标悬停在任何 #menutable div 上时,该类会添加到 .embox 中。
HTML:
<div id="maintable">
<div class="embox">
content
<div class="options">A,B,C</div>
</div>
<div class="embox">
content
<div class="options">B,F</div>
</div>
<!-- and about a hundred more just like these -->
</div>
<div id="menutable">
<div class="optionA">Apples</div>
<div class="optionB">Bravo</div>
<div class="optionC">Comp</div>
<div class="optionF">Ferengi</div>
</div>
当前脚本(不起作用):
$('#menutable div').hover(function() {
var that = this, A = "Apples", B = "Bravo", C = "Comp", F = "Ferengi";
$('#maintable .options').filter(function() {
return $(this).text().indexOf($(that).text()) === -1;
}).closest(".embox").addClass("bgtransp");
},
function() {
$(".embox").removeClass("bgtransp");
});
Another newbie question...
The script (below) compares selected text in one div with some target text in another, then applies a style to the second div's parent. I need to change the script to be less literal---not "if A is selected, look for A"; but rather, "if Apples is selected, look for A."
So, how do you get jQuery to recognize two different text strings as being the same thing? I tried "var A = 'Apples', B = 'Bravo' [etc] ;", but then the class is added to .embox when I hover over any #menutable div.
The HTML:
<div id="maintable">
<div class="embox">
content
<div class="options">A,B,C</div>
</div>
<div class="embox">
content
<div class="options">B,F</div>
</div>
<!-- and about a hundred more just like these -->
</div>
<div id="menutable">
<div class="optionA">Apples</div>
<div class="optionB">Bravo</div>
<div class="optionC">Comp</div>
<div class="optionF">Ferengi</div>
</div>
Current script (doesn't work):
$('#menutable div').hover(function() {
var that = this, A = "Apples", B = "Bravo", C = "Comp", F = "Ferengi";
$('#maintable .options').filter(function() {
return $(this).text().indexOf($(that).text()) === -1;
}).closest(".embox").addClass("bgtransp");
},
function() {
$(".embox").removeClass("bgtransp");
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以尝试使用 jQuery 的 inArray() 方法来查看该值是否在数组内您定义的值。
示例:
在您的代码中,检查函数返回的值是否大于 -1。更多信息可以在上面链接的 jQuery 文档中找到。
You can try to use jQuery's inArray() method to see if the value is within an array of values that you define.
Example:
In your code, check to see if the function returns something greater than -1. More info can be found in the jQuery docs linked above.
使用数据属性
HTML
JS
此外,您可以使用
stringname[0]
从字符串中获取第一个字母Use data attributes
HTML
JS
Besides, You can get first letter from string useing
stringname[0]
如果您不想使用 HTML5 data-*,您可以使用
并使用 获取数据
注意:设置 id 更符合网络标准,如
menu-table
而不是 <代码>可菜单:)if you don't want to use HTML5 data-*, you can use
and you can get the data using
note: its more web standard to set the id like
menu-table
instead ofmenutable
:)