jQuery 如何在不改变任何一个的情况下匹配两个文本字符串?

发布于 2024-11-28 14:35:14 字数 1283 浏览 0 评论 0原文

另一个新手问题...

脚本(如下)将一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

恰似旧人归 2024-12-05 14:35:14

您可以尝试使用 jQuery 的 inArray() 方法来查看该值是否在数组内您定义的值。

示例:

$.inArray($(this).html(), ['Apples', 'A', 'Orange']);

在您的代码中,检查函数返回的值是否大于 -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:

$.inArray($(this).html(), ['Apples', 'A', 'Orange']);

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.

稚气少女 2024-12-05 14:35:14

使用数据属性

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>

JS

$('#menutable div').hover(function() {
    var that = this;
    $('#maintable .options').filter(function() {
        return $(this).text().indexOf($(that).data('letter')) === -1;
        //seems to be !== -1 
    }).closest(".embox").addClass("bgtransp");
},
function() {
    $(".embox").removeClass("bgtransp");
});

此外,您可以使用 stringname[0] 从字符串中获取第一个字母

Use data attributes

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>

JS

$('#menutable div').hover(function() {
    var that = this;
    $('#maintable .options').filter(function() {
        return $(this).text().indexOf($(that).data('letter')) === -1;
        //seems to be !== -1 
    }).closest(".embox").addClass("bgtransp");
},
function() {
    $(".embox").removeClass("bgtransp");
});

Besides, You can get first letter from string useing stringname[0]

路弥 2024-12-05 14:35:14

如果您不想使用 HTML5 data-*,您可以使用

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 更符合网络标准,如 menu-table 而不是 <代码>可菜单:)

if you don't want to use HTML5 data-*, you can use

var myArray = ['Apples', 'A', 'Orange'];
var i=0;
$("#menutable > .option").each(
   function(){
     $(this).data("myOption",myArray[i]);
     i++;
});

and you can get the data using

$('#menutable > .option').click(function() {
   var myOption = $(this).data("myOption");
}

note: its more web standard to set the id like menu-table instead of menutable :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文