2013-11-26 4 views
0

Я пытаюсь установить отображение: ни один из всех диапазонов в родительском элементе родительского элемента не выбирается при изменении.Получить родительский элемент родительского опекуна всех детей

Моего HTML код

<div id="product1"> 
<div class="block"> 
    <span>qwerty</span> 
    <span>qwerty</span> 
    <span>qwerty</span> 
    <span>qwerty</span> 
    .... 
    <span>qwerty</span> 
</div> 
<div class="input"> 
    <select class="sel"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
    </select> 
</div> 
</div> 
several times the same 

Конечно, я хочу установить дисплей: нет на все элементы пролетных в том же сНе ид = «productX» в моем выборе.

Не работает код jQuery.

$(document).ready(function(){ 
     $(document).on('change', '.sel', function() { 
      $(this).parent('div').children('span').css('display' , 'none'); 
     }); 
    }); 

ответ

2

Простой тест показывает проблему

console.log($(this).parent('div')) 

возвращает <div class="input">, который не имеет пролеты, как дети.

Было бы

$(this).parent('div').parent('div').find("span").hide(); 

вы можете использовать селектор и ближайший

$(this).closest('div[id]').find("span").hide(); 

лучше было бы добавить класс

+0

Спасибо, что вы его работаете. Я не могу принять Ваш ответ, потому что у меня низкий представитель. – Piotr

0

Try:

$(document).ready(function(){ 
    $(document).on('change', '.sel', function() { 
     $(this).parent('div').parent('div').find('span').css('display' , 'none'); 
    }); 
}); 
+0

вместо '$ (это) .closest ('# Product1')' вы можете просто '$ ('# Product1')'. –

+0

Ty, но у меня много блоков, и у всех есть id product1, product2 и т. Д. У меня должен быть универсальный код для структуры. – Piotr

+0

@Piotr отредактировал ответ. – Hiral

0

Так когда Выберите изменения, которые вы хотите, чтобы установить дисплей ни на всех тегах диапазона под продуктом1 div справа? Из кода, который у вас есть, похоже, что вы получите родительский div og select, который будет div с вводом класса. Поэтому, я думаю, вам придется снова получить родительский элемент этого div и выбрать все дочерние интервалы.

0

Попробуйте использовать .parents()

$(document).ready(function(){ 
     $(document).on('change', '.sel', function() { 
      $(this).parents('div[id^="product"]').children('span').css('display' , 'none'); 
     }); 
    }); 
Смежные вопросы