我有以下HTML代码:
<span aria-activedescendant="categoria_option_selected" aria-busy="false" aria-readonly="false" aria-disabled="false" aria-owns="categoria_listbox" tabindex="0" aria-expanded="false" aria-haspopup="true" role="listbox" unselectable="on" class="k-widget k-dropdown k-header k-state-error" style="width: 200px;">
<span unselectable="on" class="k-dropdown-wrap k-state-default">
<span unselectable="on" class="k-input"></span>
<span unselectable="on" class="k-select">
<span unselectable="on" class="k-icon k-i-arrow-s">select</span>
</span>
</span>
<select data-role="dropdownlist" name="categoria" id="categoria" style="width: 200px; display: none;">
<option selected="selected" value=""></option>
<option value="Affiti + Utilities">Affiti + Utilities</option>
<option value="Stipendi + Contributi">Stipendi + Contributi</option>
<option value="Consumo Mensile">Consumo Mensile</option>
<option value="Voip">Voip</option>
<option value="Internet">Internet</option>
</select>
</span>
我想在第二个范围内添加:addClass('k-state-error')
并根据选择ID删除removeClass('k-state-default')
。
我试过了:
$('#categoria').closest('.k-state-default').removeClass('k-state-default').addClass('k-state-error');
和:
$('#categoria').parent('span').removeClass('k-state-default').addClass('k-state-error');
这会将类添加到第一个范围。
答案 0 :(得分:1)
$.closest
的使用不正确。它应该用于获取DOM中的任何祖先(在您的情况下为span.k-widget
)。一旦你得到那个元素,你只需要$.find
你要操纵的元素。
以下代码完成工作:
$('#categoria')
.closest('span.k-widget')
.find('.k-state-default')
.removeClass('k-state-default')
.addClass('k-state-error');