添加属性兄弟如果元素包含特定值
问题描述:
刚开始使用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);
});
我在做什么错?
答
- 如果您正在寻找一门课程,请在其之前添加
.
。 - JQuery选择器返回一个对象,你不能用这样的对象调用一个匿名的 方法。
-
.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>
答
有两个问题与您的代码:
$("product-configure-options-option ...
查找与标签称为“产品配置选项,选项的元素。 “你想与类,而不是,您可以通过前面加上一个时期获得元素:$(".product-configure-options-option ...
$(this).find('select')
查找这就是标签的孩子一个SELECT元素。你想要它的兄弟姐妹,你可以用$(this).next('select')
获得。