2013-07-10 4 views

ответ

3

Простым решением было бы искать в каждом элементе .tousers

$("#compose-child-container-1 .tousers").each(function() { 
    if($(this).val() == 'car') $(this).addClass('className'); 
}); 

Примечание:[value="car"] не будет работать для пользователей-модифицированных значений. Следовательно, цикл является практически единственным решением.

+0

Ну, '[х = у]' селектор не будет работать для пользовательского ввода значений. – techfoobar

+0

Вы можете использовать 'filter()' вместо явного цикла. –

+0

в порядке. Таким образом, это может работать только в том случае, если значение является машиной при первой загрузке страницы? –

0

Использование $(this). В функции, вы должны использовать $(selector).each(function() { // code }

0

Попробуйте это:

$('#compose-child-container-1 .tousers').each(function() { 
    var el = $(this); 
    if (el.val() == 'car') { 
     el.addClass('found'); 
    } 
}); 
3

Здесь селектор атрибута не будет работать, так как только пользователь изменяет значение в поле ввода атрибут не обновляется, только элементы DOM свойство обновляется

что бы я сделал это

$("#compose-child-container-1").find(".tousers").filter(function(){ 
    return this.value == 'car' 
}).addClass('someclass') 
0

Я хотел бы использовать filter:

$("#compose-child-container-1 .tousers").filter(function() { 
    return this.value == "car"; 
}).addClass('found'); 

Это отделяет логику от поиска элементов из того, что вы на самом деле хотите с ними делать (addClass в этом случае).

0
$("#compose-child-container-1").find(".tousers").each(function(){ 
if($(this).val()=='car'){ 
$(this).addClass('className'); 
} 
}) 
0

Если вы уверены, что это самое один .tousers элемент:

var $_tousers = $('#compose-child-container-1 .tousers'); 
if ($_tousers.val() == 'car') $_tousers.addClass('found'); 

Если есть больше чем один, хотя, класс будет установлен на всех из них, если значение Первый из них является " автомобиль », независимо от ценностей других.

Или, если вам кажется, что вы об этом говорите, вы можете создать настраиваемый селектор для проверки текущего значения элемента.

$.expr[':'].value = function(obj, index, meta, stack) { 
    console.log(meta); 
    var candidateValue = meta[3]; 
    return (candidateValue === $(obj).val()); 
}; 

... 

$('#compose-child-container-1 .tousers:value(car)').addClass('found'); 

Хотя для этого требуется создание нового селектора для проверки другого значения.

Или у вас может быть плагин.

$.fn.withVal = function(val) { 
    return this.filter(function() { return this.value == val; }); 
} 

... 

$('#compose-child-container-1 .tousers').withVal('car').addClass('found'); 

Примечание, простираясь JQuery (либо с помощью пользовательских селекторов или плагинов) только действительно стоит, если вы собираетесь хотите использовать его несколько раз.

0

Попробуйте это, это быстрый и чистый:

$("#compose-child-container-1").find(".tousers").filter(function() { 
    return this.value === 'car'; 
}).addClass('your-class'); 
+0

@ Arun P Johny уже ответил тем же методом)) –