Доступ к родительскому элементу по дочернему
Всем привет. И сразу задачка! Условия: есть несколько div'ов - "родителей" с классом parent, в них бог весть что, но в одном из них есть div с классом children. Как при помощи jQuery получить доступ к этому родителю?
вот для наглядности: <div class="parent"> </div> <div class="parent"> <div id="children"> </div> </div> <div class="parent"> </div> Гугл ни в какую не хочет подсказывать, прошу помогите P.S хочу этому родителю display:none влепить.... |
элемент.parentNode
<div id="la"> <div id="lol">g</div> </div> <script> lol = document.getElementById("lol"); alert(lol.parentNode + " " + lol.parentNode.id) </script> |
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script> <style type="text/css"> div { padding:12px; margin:4px; min-width:30px; max-width:66px; border:2px solid red; } #children { border:2px solid blue; } </style> <div class="parent"> 1 </div> <div class="parent">2 <div id="children"> </div> </div> <div class="parent">3 </div> <script type="text/javascript"> var Hide=$("#children").parent("div.parent"); setTimeout('Hide.slideUp("slow")',3000) </script> |
спасибо ребята, снова вы меня выручили
|
Добрый всем.
Нуждаюсь в помощи. Есть фильтр на сайте и кнопка сброса фильтров отображается постоянно "cf_resetAll_link", Необходимо чтоб пока в фильтре нечего не выбрано скрывать кнопку сброса, хочу это привязать к ссылке выбора фильтров, при выборе фильтров к ссылке добавляется класс "cf_sel_opt". Помогите это реализовать. <div class="filtr"> <a class="cf_resetAll_link" "href="#"><span class="cf_resetAll_label">Сбросить все фильтры</span></a> <div class="cf_my_header"> <div> <div class="cf_wrapper_inner"> <ul class="cf_filters_list"> <li><a href="#" class="cf_option cf_sel_opt">Кремы</a></li> <li><a href="#" class="cf_option">Тонизирующие лосьоны</a></li> </ul> </div> </div> </div> </div> |
adm777,
$(function() { var resetAll = $(".cf_resetAll_link").hide(); $(".cf_option").on("click", function() { resetAll.toggle($(".cf_sel_opt").length) }); }); |
Большое спасибо, отработало.
Скрылось, и при нажатии появляется на мгновение, пока загружаются результаты. А так понимаю он появляется по клику.? Может можно сделать чтоб когда при нажатии добавляется класс ".cf_sel_opt" добавлять класс к сбросу фильтров ".cf_resetAll_link-vis", чтоб было ".cf_resetAll_link .cf_resetAll_link-vis" и просто в css стилях прописать. |
adm777,
$(function() { var resetAll = $(".cf_resetAll_link"); $(".cf_option").on("click", function() { resetAll.toggleClass("cf_resetAll_link-vis", $(".cf_sel_opt").length) }); }); |
Работает, но во время клика фильтр отрабатывает и перезагружает страницу, и класс "cf_resetAll_link-vis" очищает.
Проблема в том что при фильтрации перезагружает страницу, и чистит класс. Спасибо. Буду искать дальше. |
adm777,
логика работы ваших страниц, известна только вам. |
adm777,
$(function() { var resetAll = $(".cf_resetAll_link").toggleClass("cf_resetAll_link-vis", $(".cf_sel_opt").length); $(".cf_option").on("click", function() { resetAll.toggleClass("cf_resetAll_link-vis", $(".cf_sel_opt").length) }); }); |
adm777,
Вам надо найти обработчик этого фильтра в коде, тут телепатов очень мало. |
adm777,
<style type="text/css"> .cf_resetAll_link { display: none; } .cf_resetAll_link-vis { display: inline; } </style> <script> jQuery(function() { var resetAll = jQuery(".cf_resetAll_link").toggleClass("cf_resetAll_link-vis", jQuery(".cf_option:nth-child(n+2).cf_sel_opt").length); jQuery(".cf_option").on("click", function() { resetAll.toggleClass("cf_resetAll_link-vis", jQuery(".cf_option:nth-child(n+2).cf_sel_opt").length) }); }); </script> |
|
adm777,
может где-то старые версии скрипта запускаются сделайте так перед body <script> var resetAll = jQuery(".cf_resetAll_link").toggleClass("cf_resetAll_link-vis", jQuery(".cf_option:nth-child(n+2).cf_sel_opt").length); </script> </body> |
<script> if(document.querySelectorAll(".cf_sel_opt").length==0) document.querySelector(".cf_resetAll_link").style.display='none'; </script> или так |
Спасибо, но все по прежнему, попробовал оба варианта.
|
setTimeout(function(){ if(document.querySelectorAll(".cf_sel_opt").length==0) document.querySelector(".cf_resetAll_link").style.display='none'; },1000) так попробуйте |
Цитата:
1 страница формируется неизвестно как и сколько, с 1000 можно не угадать 2. document.querySelectorAll(".cf_sel_opt").length всегда есть!!! 3. Цитата:
|
по второму пункту
Цитата:
подробней если можно. |
может так ...
setTimeout(function(){ if(document.querySelectorAll(".cf_sel_opt").length < 3) document.querySelector(".cf_resetAll_link").classList.remove("cf_resetAll_link-vis"); },1000) |
Цитата:
|
Сработало вот это
setTimeout(function(){ if(document.querySelectorAll(".cf_sel_opt").length ==0) document.querySelector(".cf_resetAll_link").style. display='none'; },0) Только опустил до 0, теперь победить чтоб при переключении фильтров он не пропадал, а то скачет не по феншую), Сей час попробую еще ваш вариант. |
Цитата:
|
Вот тут на ноль опустил
.style. display='none'; },0) bootstrap.min.js грузится. |
Часовой пояс GMT +3, время: 04:32. |