私はお勧めします:
$('#pop li').hover(
function() {
$('div.info').eq($(this).index()).show();
}, function() {
$('div.info').eq($(this).index()).hide();
});
わずかに変更された HTML の操作:
<div id="pop">
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
<li>Item 7</li>
</ul>
</div>
<div class="info"></div>
<div class="info"></div>
<div class="info"></div>
<div class="info"></div>
<div class="info"></div>
<div class="info"></div>
<div class="info"></div>
JS フィドルのデモ。
私が言い忘れていたのは、これは現在ホバーされている.info
要素と同じ要素に対応する要素を表示するので、最初にホバーすると最初のが表示されるということです。したがって、要素と要素の間の予測可能な関係を維持することに依存しています。index
li
li
.info
li
.info
余談ですが、ホバー イベントではなくクリックが必要ですが、CSS だけを使用してこのインタラクションを複製することは可能です。li
id
div
<div id="pop">
<ul>
<li><a href="#info1">Item 1</a></li>
<li><a href="#info2">Item 2</a></li>
<li><a href="#info3">Item 3</a></li>
<li><a href="#info4">Item 4</a></li>
<li><a href="#info5">Item 5</a></li>
<li><a href="#info6">Item 6</a></li>
<li><a href="#info7">Item 7</a></li>
</ul>
</div>
<div class="info" id="info1"></div>
<div class="info" id="info2"></div>
<div class="info" id="info3"></div>
<div class="info" id="info4"></div>
<div class="info" id="info5"></div>
<div class="info" id="info6"></div>
<div class="info" id="info7"></div>
そしてCSS:
.info {
/* hides by default */
display: none;
}
.info:target {
/* shows when targeted */
display: block;
}
JS フィドルのデモ。</p>
ちなみに、属性の引用はオプションですが (空白を含む属性の場合は引用する必要があります)、引用する場合は、引用する値の両端に引用符を付ける必要があります:は有効な HTMLではありません(文字列は、次の属性の先頭の次の行まで閉じられません); 使用: 。<div id="info-1></div>
<div id="info-1"></div>
さらに、投稿された jQuery:
$(function(){
$('pop a').hover(function(){
$('#info-1').show();
},function(){
$('#info-1').hide();
});
});
次の理由により、これは機能しません。
- セレクターはどの要素にも一致しません。
a
要素内の要素をターゲットにしようとしていますpop
(明らかに存在しません)。あなたがする必要があるのは、をid
a#
で始めることです (次の行で行うように、そこでタイプミスを想定しています) $('#pop a')
。しかし、
a
要素には要素がない#pop
ため、バインドされるイベントはありません。
ただし、そのフォームを使用する必要がある場合は、いくつかの調整を行うことで機能させることができます。
$(function(){
$('#pop li').hover(function(){
$('#info-' + $(this).text().match(/(\d+)/)).show();
},function(){
$('#info-' + $(this).text().match(/(\d+)/)).hide();
});
});
JS フィドルのデモ。
参考文献: