jQuery如何匹配两个文本字符串而不更改其中一个?
另一个新手问题 下面的脚本将一个div中的选定文本与另一个div中的某些目标文本进行比较,然后将样式应用于第二个div的父级。我需要将脚本更改为更少的文字,而不是“如果选择了A,则查找A”;而是说,“如果选择了苹果,那么就找一个苹果。” 那么,如何让jQuery将两个不同的文本字符串识别为相同的东西呢?我尝试了“vara='Apples',B='Bravo'[etc];”,但当我将鼠标悬停在任何#menutable div上时,该类被添加到.embox中 HTML:jQuery如何匹配两个文本字符串而不更改其中一个?,jquery,text,filter,hover,equivalent,Jquery,Text,Filter,Hover,Equivalent,另一个新手问题 下面的脚本将一个div中的选定文本与另一个div中的某些目标文本进行比较,然后将样式应用于第二个div的父级。我需要将脚本更改为更少的文字,而不是“如果选择了A,则查找A”;而是说,“如果选择了苹果,那么就找一个苹果。” 那么,如何让jQuery将两个不同的文本字符串识别为相同的东西呢?我尝试了“vara='Apples',B='Bravo'[etc];”,但当我将鼠标悬停在任何#menutable div上时,该类被添加到.embox中 HTML: <div id
<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>
使用数据属性
HTML
div id="menutable">
<div class="option" data-letter="A">Apples</div>
<div class="option" data-letter="B">Bravo</div>
<div class="option" data-letter="C">Comp</div>
<div class="option" data-letter="D">Ferengi</div>
</div>
此外,您可以使用
stringname[0]
从字符串中获取第一个字母。您可以尝试使用jQuery的方法查看该值是否在您定义的值数组中
例如:
$.inArray($(this).html(), ['Apples', 'A', 'Orange']);
在代码中,检查函数是否返回大于-1的值。更多信息可以在上面链接的jQuery文档中找到。如果您不想使用HTML5数据-*,可以使用
var myArray = ['Apples', 'A', 'Orange'];
var i=0;
$("#menutable > .option").each(
function(){
$(this).data("myOption",myArray[i]);
i++;
});
你可以使用
$('#menutable > .option').click(function() {
var myOption = $(this).data("myOption");
}
注意:设置id(如
菜单表
而不是菜单表
:)更符合web标准。这些参数只是一个示例,您应该根据自己的需要进行更改。因为我知道这将如何工作,所以我接受了答案。不过,作为记录,我还没有测试过它。我找到了一种方法使文字匹配在上下文中起作用。但是接下来,当我对jQuery比较熟悉时,我希望inArray()会非常有用。非常感谢。因为我的一些客户机可能仍然使用旧浏览器,所以我需要避开HTML5。我认为有一种方法可以通过使用jQuery data()方法来调整您的建议,但这两种方法结合在一起有点让我难以理解。@Diorist:我认为它也应该适用于旧浏览器。这将是不正确的属性为这个浏览器,他们将被忽略,所以你可以设置数据的JS和你的HTMLcode将是干净的事实感谢ID命名的建议和你的建议。随着S.K.的建议,它有助于揭开数组的神秘面纱。
var myArray = ['Apples', 'A', 'Orange'];
var i=0;
$("#menutable > .option").each(
function(){
$(this).data("myOption",myArray[i]);
i++;
});
$('#menutable > .option').click(function() {
var myOption = $(this).data("myOption");
}