2015-07-31 2 views
0

Я хотел бы выбрать элемент с классом Level1, значение которого равно $ (this) .val(). Я читал, что вы не можете сделать $ (. Level1 [someAttribute = значение]), что имеет смысл, поскольку val() не является доступным атрибутом DOM в этом смысле. Это может быть легко, но сейчас я в тупике. К сожалению, у меня нет возможности изменить способ отображения HTML ниже.

$('.Level0').each(function() { 
    var sortOfChildren = $('.Level1').val() = $(this).val //not real code 

}); 

HTML

<div class="Row Level0 PCITrainingVerification">x</div> 
<div class="Row Level1 PCITrainingVerification">x</div> 
<div class="Row Level1 PCITrainingVerification">x</div> 
<div class="Row Level1 PCITrainingVerification">x</div> 
<div class="Row Level1 PCITrainingVerification">x</div> 
<div class="Row Level0 Training2">y</div> 
<div class="Row Level0 Training3">z</div> 
<div class="Row Level1 Training3">z</div> 

ОТВЕТ

$('.Level0').each(function() { 
    var targetValue = $(this).val(); 
    var matching = $(".Level1").filter(function() { 
     return $(this).val() === targetValue; 
    }); 
    // ...use `matching` here... 
}); 
+1

Не совсем уверен, что такое $ (this) .val()? – thecraighammond

+3

Вы указали «значение» этих элементов, но ни одно из них не является полем формы! Что вы подразумеваете под «ценностью»? –

+2

также divs не имеют значения, связанного с ними –

ответ

3

Ваш вопрос говорит о .val и "ценность" элементов, но ни один из элементов в вашем вопросе не является формой поле, и поэтому они не имеют значения.

Если бы они были поля формы:

Я читал, что вы не можете сделать $, которая имеет смысл как Валу() не доступный атрибут DOM (Level1 [someAttribute = значение].) в этом смысле

Right, ваш единственный вариант заключается в цикле, вероятно, через filter:

$('.Level0').each(function() { 
    var targetValue = $(this).val(); 
    var matching = $(".Level1").filter(function() { 
     return $(this).val() === targetValue; 
    }); 
    // ...use `matching` here... 
}); 

Примечание что matching может иметь нулевые или несколько элементов в нем в зависимости от того, сколько элементов .Level1 соответствует значению.

Но так как они не являются:

... вы можете .text или .html вместо .val в выше, или, возможно, :contains selector вместо filter.

+0

Отлично! Это прекрасно работает. Я буду использовать либо текст, либо html вместо val() – Eric