jQuery将悬停时的类添加到另一个div,如果它包含特定文本(x100)
出于某种原因,我无法理解如何告诉jQuery查看一组中的每个div,然后根据该div的内容做出决定 我的HTML有点像这样: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"
<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');
}
);
}
);