由于我现在已经尝试了几天jQuery,但是一些东西(比如数组)仍在破坏我的大脑。例如,解开indexOf功能就像在英格兰退出车道时试图向右转。无论如何,我根据一个div与另一个div的比较来应用一个类......并且(当然)我无法使它工作。希望您可以通过以下脚本告诉我我是否“温暖”。或者,如果没有,如何解决它。
简而言之:基本思想是,如果将鼠标悬停在任何.elbox div上,脚本会将该elbox的.skemps div中的文本与每个.pjemp div中的内容进行比较。并且,如果找到匹配项,则将类应用于匹配的.pjemp div。
Div1:#ptosEmps li div
<div id="ptosEmps">
<div class="menu">
<ul id="menu">
<li><div class="pjemp"><a>T</a></div></li>
<li><div class="pjdesc">T Description</div></li>
<li><div class="pjemp"><a>I</a></div></li>
<li><div class="pjdesc">I Description</div></li>
<!-- ... (one primary li and description li for each of the .skemps letters -->
</ul>
</div>
</div>
Div2:#ptosTable .elbox .skemps
<div id="ptosTable">
<div class="elbox">
content
<div class="skemps">T,I,H,P,W,L,N,F</div>
</div>
<!-- About 100 of these. .skemps div can contain one or more of those letters. -->
</div>
脚本(不起作用):
$('#ptosEmps li').filter(":even").hover(function() {
$(this).filter(function() {
return $('#ptosTable .skemps').text().indexOf($('.pjemp').text()) == -1;
//if skemps = any text in menu div, return true?
}).addClass('.emp_hi');
},
function() {
$(this).removeClass('.emp_hi');
});
我想也许我需要以某种方式将整个过滤器函数定义为$(this),然后说“$(this).addclass('。emp_hi');”但是如何?
为了记录,我忘了提到Div2中的文本(在Div1中触发addClass)也是通过css隐藏的。所以,根据BumbleB2na的建议,这就是我最终的结果( WORKS!):
$('.elbox').hover(function() {
var arrSkemp = $(this).children('.skemps').text().split(',');
$.each(arrSkemp, function(index, value) {
$('.pjemp:contains(' + value + ')').addClass('emp_hi');
});
},
function() {
$('.pjemp').removeClass('emp_hi');
});
支持BumbleB2na的道具---无论是帮助我解决问题中的问题,还是为了快速,非常有效的反应,都没有打破我的大脑!
答案 0 :(得分:2)
K try my jsfiddle,也许会有所帮助。我无法使indexOf()工作,但这是我要使用的代码:
$('.skemps').hover(function() {
var arrSkemp = $(this).text().split(',');
$.each(arrSkemp, function(index, value) {
$('.pjemp:contains(' + value + ')').addClass('emp_hi');
});
},
function() {
var arrSkemp = $(this).text().split(',');
$.each(arrSkemp, function(index, value) {
$('.pjemp:contains(' + value + ')').removeClass('emp_hi');
});
});