これが私の問題児です:
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 を使用して) ギャラリーに一連の画像を読み込みます。「タイトル」のいくつかのフィールドとキャプションの内容に基づいて、それが「前」か「後」かを判断し、そのクラスを画像などと画像自体をラップするタグの両方に割り当てます。また、キャプション テキストに基づいて、画像に「name」属性を割り当てます。これはすべてうまく機能しています。
「ホバー」は、物事がうまくいかない場所です。
ホバリングしても何も起こりませんが、マウスアウト時に (この記事のタイトルにある) Lint エラーがスローされます。
想定される動作: まず、ホバーされた画像の名前を取得し、それを imgName に貼り付けます (これは機能しています)。次に、ホバーされた img の位置を取得します
ここに醜いものがあります:私は $('img.before[name=""]') で画像を識別しようとします 'this'、つまりホバリングしている名前の変数を使用して、変数「imgBefore」に CSS を適用して、「後」と同じ左/上の位置に移動しようとしますが、z-index は異なります。
'img.before[name=""] は、リントが不満を言っているセレクターのようです...それは言います:
Selector: "img.before[name="CarterLivingRoom"]"
You've used the same selector more than once.
したがって、変数を正しく使用しています。マウスアウトでエラーが2回スローされるようです。おそらく「hover()」はそれを 2 回使用していますが、どうすれば回避できますか?