jQuery将悬停时的类添加到另一个div,如果它包含特定文本(x100)

jQuery将悬停时的类添加到另一个div,如果它包含特定文本(x100),jquery,hover,each,contains,addclass,Jquery,Hover,Each,Contains,Addclass,出于某种原因,我无法理解如何告诉jQuery查看一组中的每个div,然后根据该div的内容做出决定 我的HTML有点像这样: <div id="maintable"> <div class="elbox"> content <div class="options">A,B,C</div> </div> <div class="elbox"> content <div class="options"

出于某种原因,我无法理解如何告诉jQuery查看一组中的每个div,然后根据该div的内容做出决定

我的HTML有点像这样:

<div id="maintable">
 <div class="elbox">
  content
  <div class="options">A,B,C</div>
 </div>
 <div class="elbox">
  content
  <div class="options">B,F</div>
 </div>
 <!-- and about a hundred more just like these -->)
</div>

<div id="menutable">
 <div class="optionA">A</div>
 <div class="optionB">B</div>
 <div class="optionC">C</div>
</div>
但它不起作用

但是,如果我翻转逻辑,以便在找到“A”时发生addClass,则该类将应用于每个.elbox的onhover。所以,我认为我的脚本实际上可能会说,“如果有.options div有一个“A”,那么就隐藏每个.elbox

我做错了什么?是我的“每个”吗?是我缺少一个父选择器吗?…还是完全错误的方法

为我的愚蠢道歉(我正在努力),
谢谢!

这应该可以做到:

$('#menutable div').hover(function() {
    var that = this;
    $('#maintable .options').filter(function() {
        return $(this).text().indexOf($(that).text()) === -1;
    }).closest(".elbox").css("border", "1px solid red");
});

这应该可以做到:

$('#menutable div').hover(function() {
    var that = this;
    $('#maintable .options').filter(function() {
        return $(this).text().indexOf($(that).text()) === -1;
    }).closest(".elbox").css("border", "1px solid red");
});

您的选择器也使用了。当它应该是#

此外,您的选择器正在使用。当它应该是#

时,请参见此处

我想,也许您不想在菜单表悬停时搜索,而是从选项中搜索,其中包含当前单元格中的值。 因此,必须在更原子的元素中应用悬停事件处理程序

此外,您还错误地使用了“.”选择器而不是“#”选择器,请查看此页面以了解有关该问题的详细信息:

使用正确的选择器,使用find()和has()jquery函数可以让您的生活变得更加轻松:)

看这里

我想,也许您不想在菜单表悬停时搜索,而是从选项中搜索,其中包含当前单元格中的值。 因此,必须在更原子的元素中应用悬停事件处理程序

此外,您还错误地使用了“.”选择器而不是“#”选择器,请查看此页面以了解有关该问题的详细信息:

使用正确的选择器,使用find()和has()jquery函数可以让您的生活变得更加轻松:)


为什么你从来没有使用
i
参数?为什么你从来没有使用
i
参数?谢谢你,尼古拉斯!出于这个问题的目的,新类应该应用于父框,而不是.options框…尽管我很欣赏你的建议,并且肯定会将其用于其他目的。同时,我会仔细研究它选民。谢谢,尼古拉斯!出于问题的目的,新类应该应用于父框,而不是.options框…尽管我很感激你的建议,并且肯定会将其用于其他目的。同时,我会深入了解选择器。谢谢你的建议,以及选择器的更正。这个版本很有效,尽管虽然我没有指定新类应该在mouseout上删除,并最终将其作为函数添加。感谢您的建议以及选择器更正。虽然我没有指定新类应该在mouseout上删除,并最终将其作为函数添加,但此版本仍然有效。
$('#menutable div').hover(function() {
    var current = $(this);
    $('#maintable .options').each(function() {
        if (!$(this).is(":contains('" + current.text() + "')")) {
            $(this).closest('.elbox').addClass('bgtransp');                  
        }
    });
});
$('#menutable')
.find('div')
.hover(
  function() {
    var overMe=$(this);
      $(".options:contains('"+overMe.html()+"')").each(
      function() {
        $(this).addClass('bgtransp');
      }
    );
  }
);