这是我的问题孩子:
jQuery(document).ready(function() {
var a = jQuery('img[title*="after"]');
a.parents('dl.gallery-item').addClass('after');
a.addClass('after');
var b = jQuery('img[title*="before"]');
b.parents('dl.gallery-item').addClass('before');
b.addClass('before');
//the following gives each image a 'name' attribute based on the caption, collapsed.
jQuery('img').each(function() {
var f = jQuery(this).parents('dl.gallery-item').find('dd').text();
var f = f.replace(/\s/g,'');
jQuery(this).attr('name', f);
});
//the following takes each 'name' attribute, finds the before, and sticks it behind the after
jQuery('img.after').hover(function() {
var imgName = jQuery(this).attr('name');
// alert(imgName);
var afterPosition_L = jQuery(this).offset().left;
var afterPosition_T = jQuery(this).offset().top;
var css_string = '{ top: '+ afterPosition_T +'; left: '+ afterPosition_L +'; position: absolute; z-index: 999;}';
var imgBefore = jQuery('img.before[name="'+ imgName +'"]');
// alert(imgBefore);
jQuery(imgBefore).css(css_string);
});
说明:我正在使用 WordPress(所以我拼写 jQuery)。WordPress 在图库中加载一堆图像(使用 PHP)。根据“标题”的一些字段和标题的内容,我确定它是“之前”还是“之后”,并将该类分配给包装图像等的标签和 img 本身。我还根据标题文本为图像分配了一个“名称”属性。这一切运作良好。
“悬停”是事情变坏的地方。
悬停时没有任何反应,但鼠标移出时会引发 Lint 错误(在这篇文章的标题中)。
应该发生什么:首先,我得到悬停图像的名称并将其粘贴在 imgName 中(这是有效的)。接下来,我得到了悬停的 img 的位置
这是丑陋的东西:我尝试使用来自“this”的名称变量(即我们悬停的那个)用 $('img.before[name=""]') 识别图像,并将其粘贴在变量“imgBefore”,然后我尝试对其应用 CSS 以将其移动到与“之后”相同的左侧/顶部位置,但具有不同的 z-index。
'img.before[name=""] 似乎是 Lint 抱怨的选择器......它说:
Selector: "img.before[name="CarterLivingRoom"]"
You've used the same selector more than once.
所以它正确使用了变量。它似乎确实在鼠标移出时抛出了两次错误。也许'hover()' 使用了两次,但如何避免呢?