Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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
jQuery如何匹配两个文本字符串而不更改其中一个?_Jquery_Text_Filter_Hover_Equivalent - Fatal编程技术网

jQuery如何匹配两个文本字符串而不更改其中一个?

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中的选定文本与另一个div中的某些目标文本进行比较,然后将样式应用于第二个div的父级。我需要将脚本更改为更少的文字,而不是“如果选择了A,则查找A”;而是说,“如果选择了苹果,那么就找一个苹果。”

那么,如何让jQuery将两个不同的文本字符串识别为相同的东西呢?我尝试了“vara='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>
使用数据属性

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");
}