Доступ к родительскому элементу по дочернему
Всем привет. И сразу задачка! Условия: есть несколько 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, время: 10:37. |