2016-11-08 100 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 ...查找与标签称为“产品配置选项,选项的元素。 “你想与类,而不是,您可以通过前面加上一个时期获得元素:$(".product-configure-options-option ...

  2. $(this).find('select')查找这就是标签的孩子一个SELECT元素。你想要它的兄弟姐妹,你可以用$(this).next('select')获得。