第二个跨度上的kendo ui addClass(' k-state-error')

时间:2016-03-17 17:38:02

标签: javascript jquery kendo-ui

我有以下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'); 这会将类添加到第一个范围。

1 个答案:

答案 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');