2016-11-08 4 views
0

Только начал с JavaScript/JQueryдобавить свойство к родственному, если элемент содержит определенное значение

Я имею follwing формы (сгенерированную, так что нет управления на выходе) и хочу сделать это необходимо, если этикетка содержит < EM> * </EM>

<div class="product-configure-options-option"> 
    <label for="product_configure_option_112843">Aantal verpakkingen links: <em>*</em></label> 
    <select name="option[112843]" id="product_configure_option_112843"> 
    <option value="467619" selected="selected">Geen</option> 
    <option value="467631">1</option>  
    <option value="467623">5</option> 

    </select> 
    <div class="product-configure-clear"></div> 
</div> 

Я попытался следующий код. , так что если div содержит метку, содержащую em, найдите ближайший выбор и добавьте требуемое свойство.

$("product-configure-options-option label").has("em")(function() { 
$(this).find('select').prop('required',true); 
}); 

Что я делаю неправильно?

ответ

1
  1. Если вы ищете класс, добавьте ..
  2. Селекторы JQuery возвращают объект, вы не можете вызвать метод анонимного для объекта вроде этого.
  3. .find() ищет элементы внутри других элементов, вместо этого используйте .next().

var labelsWithEm = $(".product-configure-options-option label").has("em"); // find all relevant items 
 

 
labelsWithEm.each(function() { // iterate the items 
 
    $(this).next('select').prop('required', true); // find the next sibling that is select, and add the prop 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="product-configure-options-option"> 
 
    <label for="product_configure_option_112843">Aantal verpakkingen links: <em>*</em> 
 
    </label> 
 
    <select name="option[112843]" id="product_configure_option_112843"> 
 
    <option value="467619" selected="selected">Geen</option> 
 
    <option value="467631">1</option> 
 
    <option value="467623">5</option> 
 

 
    </select> 
 
    <div class="product-configure-clear"></div> 
 
</div>

0

Есть две проблемы с вашим кодом:

  1. $("product-configure-options-option ... выглядит для элемента с тега называется «продакт-Configure-параметры-опции. " Вы хотите, чтобы элемент с этим класса вместо, который вы можете получить, предваряя период: $(".product-configure-options-option ...

  2. $(this).find('select') выглядит для SELECT, элемент это ребенок этикетки. Вместо этого вы хотите его родного брата, который вы можете получить с помощью $(this).next('select').

Смежные вопросы