<div class="parent">
<div class="parent.child">
<a href="#"></a>
<div class="parent.chil.child">
<div class="parent.chil.child.child">
<img src ="link0" >
<img src ="link1" >
<img src ="link2" >
</div>
</div>
</div>
<h4>
<a href= "aspPage.aspx">text</a>
</h4>
<div class="imgClass0">
<p>some text</p>
</div>
<div class="imgClass1">
<p>some text</p>
</div>
<div class="imgClass2">
<p>some text</p>
</div>
Эй, ребята !
У меня проблема. У меня есть div, в котором у меня может быть один или несколько узлов <img>
, зависит от того, как сервер генерирует DOM (может быть один или много, зависит от числа из базы данных. В <h4>
есть несколько элементов <div>
<h4>
, число из них равно числу элементов <img>
сверху.
Мне нужна помощь в создании javascript, который делает "imgClass1" видимым, когда я нахожу <img src="link1" >
, а другой imgClassX, X = (1..n) невидим и т.д. Я даю им display:none
видимости по умолчанию display:none
, но мне нужно imgClass0, чтобы иметь visibility:visible.
умолчанию visibility:visible.
С наилучшими пожеланиями, iusmar.
Вы можете назначить запуск с помощью селектора вместе с : eq() селектором:
$('img[src^=link]').hover(function() {
var idx = $(this).index();
$('div[class^="imgClass"]:eq(' + idx + ')').show();
}, function() {
var idx = $(this).index();
$('div[class^="imgClass"]:eq(' + idx + ')').hide();
});
Добавьте класс /id, как показано ниже для изображений
<img class="img0" src ="link0" >
<img class="img1" src ="link1" >
<img class="img2" src ="link2" >
и попробуйте следующий javascript
$("img").hover(function (){
var cls=$(this).attr("class");
$("div[class^='imgClass']").hide();
var visibleCls=".imgClass"+(parseInt(cls.replace("img","")));
$(visibleCls).show();
});
Во-первых, вы должны поместить класс в свои изображения для использования в качестве селектора. Вы также должны поместить идентификатор изображения как атрибут данных в теги. Это позволит вам легко назначить обработчик событий при наведении на них изображений, а также легко извлечь идентификатор изображения:
<img src="link0" class="yourImages" data-image-id="0">
<img src="link1" class="yourImages" data-image-id="1">
<img src="link2" class="yourImages" data-image-id="2">
Вы также можете применить этот идентификатор к div:
<div class="images" data-image-id="0">
<p>some text</p>
</div>
<div class="images" data-image-id="1">
<p>some text</p>
</div>
<div class="images" data-image-id="2">
<p>some text</p>
</div>
Затем вы можете связать парения обработчик к yourImages
класса, получить идентификатор из наведен элемента, скрыть все изображения дивы затем показать только требуется один:
$('.yourImages').hover(function() {
var imageID = $(this).data('image-id');
$('.images').hide();
$('.images[data-image-id="' + imageID + '"]').show();
}, function() {
$('.images').hide();
});
Что вы хотите сделать, когда перестаете парить над любыми изображениями? Мой пример просто скрывает их всех снова.