Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Спрятать только выделенный элемент (https://javascript.ru/forum/events/55182-spryatat-tolko-vydelennyjj-ehlement.html)

ureech 16.04.2015 19:24

В дальнейшем это дело будет в динамике и в цикле в смарти
{foreach key=tid item=cat from=$list}
<div class="parent">
	<div class="child">...</div>
	</div>
{/foreach}

$tid принимает значения от 0 и далее, может к этому как то привязать?

laimas 16.04.2015 19:25

Во первых $(".parent div") означает - получить все элементы div элемента с классом parent. Чего вам и хочется, хотя правильнее будет так:
$(".parent > div")

только так $("div .parent") - это означает в неком div получить элемент с классом parent. И в каком это div он у вас находится и с чего бы это работало?

Ваше "работает", может быть только так:
$("div.parent > div").hover(function(){
        $(this).toggleClass("opacity");
    });

ибо просто обращение по классу без указания тега, это поиск всех элементов документа отвечающих этому селектору. Чего делать не рекомендуется.

Вам две копии примера показали, они рабочие.

PS. Если parent содержит один элемент, то зачем обращаться к child через него?

ureech 16.04.2015 19:44

Цитата:

Сообщение от laimas
Вам две копии примера показали, они рабочие.

Да, рабочие.
Цитата:

Сообщение от laimas
Если parent содержит один элемент, то зачем обращаться к child через него?

А как по другому? У меня выводит три "parent", в каждом "child". Может в шаблоне onMousover на див повесить? что то поменяется?

laimas 16.04.2015 19:53

Если в "parent" помещается только один "child", то измените в примерах селектор на "div.child". Этого будет достаточно. Если бы необходимо было менять стили только "parent child", не затрагивая "child" в других элементах, тогда бы надо было действовать как показывали. Иначе смысла нет в обращении через "parent".

ureech 16.04.2015 20:05

Цитата:

Сообщение от laimas
то измените в примерах селектор на "div.child".

Не помогает, скрываются все три "child".

laimas 16.04.2015 20:09

Внимательно смотрим на html-код! Ваш? По одному элементу, а не по три и более в "parent", правильно?
<html> 
<head> 
<style>
.child {
    color: #f00;
}
.opacity {
    color: #0f0;
}
</style> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script> 
$(function() {
    $("div.child").hover(function(){
        $(this).toggleClass("opacity");
    });
});
</script>     
</head> 
<body>
<div class="parent">
    <div class="child">aaa</div>
</div>
<div class="parent">
    <div class="child">bbb</div>
</div>
<div class="parent">
    <div class="child">ccc</div>
</div>
</body> 
</html>

Работает?

рони 16.04.2015 20:15

ureech,
вам тостаточно css - js тут ненужен

ureech 16.04.2015 20:27

Цитата:

Сообщение от laimas
Работает?

Работает. Но мне нужно hover на "parent", так как на "parent" привязана svg анимация, которая работает при hover и при этом и нужно скрыть внутренний див "child"

Цитата:

Сообщение от рони
вам тостаточно css - js тут ненужен

Возможно да, но хотелось бы на js, та как возможно потом прикручу fadeUp или что то подобное.

laimas 16.04.2015 20:28

Ну да, CSS. Только о каких "всех" постоянно идет речь, даже после того ка вроде бы один прописан.

laimas 16.04.2015 20:30

Но мне нужно hover на "parent", так как на "parent" привязана svg анимация

Ну так оставьте селектор, который вам ранее показывали, в чем проблема?


Часовой пояс GMT +3, время: 12:31.