js в smarty шаблоне

#1 17 апреля 2015 в 09:37
Здравствуйте. 1.10.6.
В шаблоне такая структура
  1. {foreach key=tid item=b from=$a}
  2. <div class="parent">
  3. <div class="child">...</div>
  4. </div>
  5. {/foreach}
В результате выводятся три блока.
Нужно при hover на ".parent" спрятать див ".child". (Hover на "child" не реагирует.) Пробовал сделать так
  1. $(function(){
  2. $(".parent").hover(function(){
  3. $(".child").toggleClass("opacity");
  4. });
  5. });
Но тогда при hover прячутся все три "child". Тогда решил добавить к "parent" data-id={$tid}
  1. <div class="parent" data-id={$tid} >
и в ф-ции
  1. var str = S(".parent").attr(data-tid);
  2. {literal}
  3. $(function(){
  4. $(str).hover(function(){
  5. $(".child").toggleClass("opacity");
  6. });
  7. });
  8. {/literal}
Но так не работает. Не подскажите как правильно сделать?
#2 17 апреля 2015 в 09:55
В вашем первом примере в $(".child").блабла(); выбираются все дети.
Ваш второй пример — посмотрите сперва значение переменной str, прежде чем писать $(str).тратата();

Совет. Модифицируйте первый пример. Попробуйте id присваивать детям, а не родителю. При наведении на родителя перечисляйте id скрываемых детей.
#3 17 апреля 2015 в 09:56
Я здесь вставлял смарти в js, посмотрите.
В любом случае, нужно обращаться к уникальным классам, иначе не выйдет.
#4 17 апреля 2015 в 10:06
народ вы вообще о чем сейчас какие дети и ID разные, какие разные классы. да и зачем делать на js если все можно сделать на css
если нужно на js тогда код будет вот такой

  1.  
  2.  
  3. $(function(){
  4. $(document).on('hover','.parent',function(e){
  5. $(this).children('.child').toggleClass('opacity');
  6. });
  7.  
На пальцах что за магия такая, вешаем событие ховер на глобальное простраство документа, при этом при ховере получим таргет елемент, дальше выбираем потомков с классом child и меняем ему класс.

примерно все тоже самое на css
  1.  
  2. .parent .child {opacity:0.3;}
  3.  
  4. .parent:hover > .child {opacity:1;}
  5.  
#5 17 апреля 2015 в 10:24
Джехутимери, Спасибо, это немного не то.
Странник, Так пробовал, не работает,
maxisoft, Спасибо, да надо на js, ваш вариант не хочет что то работать.(css работает). Посмотрю ещё, возможно что то упустил.
#6 17 апреля 2015 в 10:33
сайт в сети? проблема скорее всего в toggleClass() скорее всего стили не работают.
#7 17 апреля 2015 в 10:34
К сожалению на локалке.
#8 17 апреля 2015 в 10:40
Возможно ли, что это всязанно с тем, что на " .parent: hover" висит svg анимация, вот полный код
  1. {foreach key=tid item=article from=$articles}
  2.  
  3. <div class="box_svg">
  4. <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
  5. <line class="top" x1="0" y1="0" x2="300%" y2="0"/>
  6. <line class="left" x1="0" y1="100%" x2="0" y2="-200%"/>
  7. <line class="bottom" x1="100%" y1="100%" x2="-200%" y2="100%"/>
  8. <line class="right" x1="100%" y1="0" x2="100%" y2="300%"/>
  9. </svg>
  10. <div class="red">
  11.  
  12. <img src="/templates/real/002.png" alt="realm">
  13.  
  14. <h3>{$article.cat_title}</h3>
  15. <span>2012</span>
  16. <span>Walnut, Pineapple</span>
  17. </div>
  18. </div>
  19.  
  20. {/foreach}
#9 17 апреля 2015 в 10:41
стили для блоков покажи.
#10 17 апреля 2015 в 10:44
  1.  
  2. @import url(http://fonts.googleapis.com/css?family=Lato:300,400,700|Ruthie);
  3. @font-face {
  4. font-weight: normal;
  5. font-style: normal;
  6. font-family: 'codropsicons';
  7. src:url('../fonts/codropsicons/codropsicons.eot');
  8. src:url('../fonts/codropsicons/codropsicons.eot?#iefix') format('embedded-opentype'),
  9. url('../fonts/codropsicons/codropsicons.woff') format('woff'),
  10. url('../fonts/codropsicons/codropsicons.ttf') format('truetype'),
  11. url('../fonts/codropsicons/codropsicons.svg#codropsicons') format('svg');
  12. }
  13. .box_svg {
  14. width:31.5%;
  15. height: 370px;
  16. position: relative;
  17. background: rgba(255,255,255,0);
  18. display: inline-block;
  19. margin: 0 10px;
  20. cursor: pointer;
  21. color: #2c3e50;
  22. box_svg-shadow: inset 0 0 0 3px #2c3e50;
  23. -webkit-transition: background 0.4s 0.5s;
  24. transition: background 0.4s 0.5s;
  25. box-shadow: inset 0 0 0 10px #fff;
  26. margin:0.5%;
  27. }
  28. .box_svg:first-child{
  29. margin-left:0%;
  30. }
  31. .box_svg:last-child{
  32. margin-right:0%;
  33. }
  34. .box_svg:hover {
  35. background:rgba(0,51,102,0.7);
  36. -webkit-transition-delay: 0s;
  37. transition-delay: 0s;
  38. box-shadow: inset 0 0 0 10px #FFF;
  39. }
  40.  
  41. .box_svg h3 {
  42. font-family: "codropsicons", cursive;
  43. font-size: 30px;
  44. line-height: 100px;
  45. margin: 0;
  46. font-weight: 400;
  47. width: 100%;
  48. color: #000;
  49. }
  50.  
  51. .box_svg span {
  52. display: block;
  53. font-weight: 400;
  54. text-transform: uppercase;
  55. letter-spacing: 1px;
  56. font-size: 13px;
  57. padding: 5px;
  58. color: #C60000;
  59. text-align:center;
  60. }
  61.  
  62. .box_svg h3,
  63. .box_svg span {
  64. -webkit-transition: color 0.4s 0.5s;
  65. transition: color 0.4s 0.5s;
  66. }
  67.  
  68. .box_svg:hover h3,
  69. .box_svg:hover span {
  70. -webkit-transition-delay: 0s;
  71. transition-delay: 0s;
  72. color: #000;
  73. }
  74.  
  75. .box_svg svg {
  76. position: absolute;
  77. top: 0;
  78. left: 0;
  79. }
  80.  
  81. .box_svg svg line {
  82. stroke-width: 8;
  83. stroke: #CC0000;
  84. fill: none;
  85. -webkit-transition: all .8s ease-in-out;
  86. transition: all .8s ease-in-out;
  87. }
  88.  
  89. .box_svg:hover svg line {
  90. -webkit-transition-delay: 0.1s;
  91. transition-delay: 0.1s;
  92. stroke: rgba(0,51,102,0.8);;
  93. }
  94.  
  95. .box_svg svg line.top,
  96. .box_svg svg line.bottom {
  97. stroke-dasharray: 370 260;
  98. }
  99.  
  100. .box_svg svg line.left,
  101. .box_svg svg line.right {
  102. stroke-dasharray: 400 310;
  103. }
  104.  
  105. .box_svg:hover svg line.top {
  106. -webkit-transform: translateX(-640px);
  107. transform: translateX(-640px);
  108. }
  109.  
  110. .box_svg:hover svg line.bottom {
  111. -webkit-transform: translateX(640px);
  112. transform: translateX(640px);
  113. }
  114.  
  115. .box_svg:hover svg line.left {
  116. -webkit-transform: translateY(740px);
  117. transform: translateY(740px);
  118. }
  119.  
  120. .box_svg:hover svg line.right {
  121. -webkit-transform: translateY(-740px);
  122. transform: translateY(-740px);
  123. }
  124.  
  125.  
  126. .box_svg .red{
  127. width:90%;
  128. height:40%;
  129. margin:5%;
  130. background:#CC0000;
  131. }
  132. .box_svg .red img{
  133. width:50%;
  134. margin-left:25%;
  135. }
  136. .opacity{
  137. opacity:0;
  138. }
  139. /* Color */
  140.  
  141.  
#11 17 апреля 2015 в 10:51
по идее все должно работать, если правильно указаны стили в селекторах js
#12 17 апреля 2015 в 10:59
  1. {literal}
  2. <script>
  3. $(function(){
  4. $(document).on('hover','.box_svg',function(e){
  5. $(this).children('.red').toggleClass('opacity');
  6. });
  7. </script>
  8. {/literal}
#13 17 апреля 2015 в 11:07
Может с системой, что или с браузером. Пойду в ubuntu посмотрю.
#14 17 апреля 2015 в 12:54
В общем не понимаю, в чём проблема. Остановлюсь пока на css, а потом перенесу в сеть, там посмотрю.
#15 17 апреля 2015 в 13:11
Всем спасибо. "Разобрался", код работает в таком виде
  1. $(function(){
  2. $(".box_svg").hover(function(){
  3. $(this).children('.red').toggleClass('opacity');
  4. });
  5. });
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.