У меня есть 3 родительских div и 3 дочерних div. когда я нажал на родительский div, эквивалентный дочерний div, должен быть visible.both родительский и дочерний эквивалентный список. всякий раз, когда пользователь наводил 1-й div-эквивалентный дочерний элемент ul li, добавьте некоторый класс (выделить). и в то время как второй div также работает так. Не действует один div на другой. Я написал какой-то код, здесь какая-то часть работает нормально. Я хочу оптимизировать код. есть ли какие-либо ограничения для этого кода.
и некоторые из них ошибочны. есть ли способ сделать это без использования номера индекса
HTML-код
<div class="myparent">
<div class="parent">
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
click here and hover and test-'s
</div>
<div class="parent">
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
click here and hover and test-'s
</div>
<div class="parent"></div>
</div>
<div class="mychaild">
<div class="chaild" style="display:none">
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
</div>
<div class="chaild" style="display:none">
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
</div>
<div class="chaild" style="display:none"></div>
</div>
КОД JAVASCRIPT
$(document).ready(function() {
$('.parent').click(function(e) {
e.preventDefault();
indexn = $('.parent').index(this);
$('.chaild:eq(' + indexn + ')').show();
$('.parent:eq(' + indexn + ') ul li').hover(function() {
$(this).toggleClass('selected');
chaildindex = $('.parent:eq(' + indexn + ') ul li').index(this);
$('.chaild:eq(' + indexn + ') ul li:eq(' + chaildindex + ')').toggleClass('selected');
});
});
});
ДЛЯ БОЛЬШЕ ПОНИМАНИЯ http://codepen.io/sarath704/pen/cpKsJ
или http://jsbin.com/Aqidopi/1/edit
И дайте мне предложения, я новичок в JavaScript и программировании jQuery
Вам нужно будет связать функцию .hover()
вне события click, а не внутри нее:
$(document).ready(function() {
$('.parent').click(function(e) {
e.preventDefault();
indexn = $('.parent').index(this);
$('.chaild:eq(' + indexn + ')').show();
});
$('.parent ul li').hover(function() {
$(this).toggleClass('selected');
var liIndex = $(this).index(),
parentIndex = $(this).parents('.parent').index();
$('.chaild:eq('+parentIndex+') > ul > li:eq('+liIndex+')').toggleClass('selected');
});
});
<ul>
может быть только<li>
. Если вы хотите вложить<ul>
в другой, сначала вам нужно будет вложить его внутри<li>
.