2013-08-21 4 views
0

У меня есть вопрос относительно селектора.Выберите элементы под определенным именем класса

Я хочу выбрать поле ввода, которое не находится под определенным классом.

Моего HTML

<div class='test'> 
    …… 
    <input type='text'></input> 
// more input field 
    <div class='nonTarget> 
     <input type='text' ></input> 
    <div> 

</div> 

Я хочу поле ввода под тестовым классом, но не нецелевые дела.

Я

var test = $('.test :not(.answer) input'); 
     test.each(function(){ 
      console.log($(this).val()) 
     }) 

но, кажется, выбрать все поля ввода .. Может кто-нибудь помочь мне об этом? Большое спасибо!

+0

комментарий Мэтта прав _ jsfiddle здесь: http://jsfiddle.net/ZtKdr/ – pixeline

ответ

2

Вы можете использовать $('.test input:not(.nonTarget input)').

Он использует :not selector, и находит все inputs, которые являются потомками .test, но которые не совпадают селектор .nonTarget input (т.е. не являются потомком .nonTarget).

См. Здесь; http://jsfiddle.net/LAgkX/

1

Поскольку вы используете JQuery:

$('.test').children('input').each(function(){ 
    console.log($(this).val()); 
}); 

Селектор .children() идет только на один шаг вниз по дереву DOM, так что вы должны быть хорошо.

+0

будет работать только в том случае, если входы являются прямыми потомками '.test' –

+1

@koala_dev ОП не указывают, что он хотел что-то другое , – crush

+0

@crush, честно говоря, вопрос нечеткий, что означают точки '...' над входом? вы предполагаете, что это означает братьев и сестер, но могут также быть и другими элементами контейнера. –