首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >容器中元素x的jQuery切换类

容器中元素x的jQuery切换类
EN

Stack Overflow用户
提问于 2016-03-03 13:29:49
回答 1查看 106关注 0票数 0

对于容器中的某个元素,我遇到了切换类的问题。在不同的位置有多个元素。当前HTML:

代码语言:javascript
复制
<dl class="sp-methods">
    <h4>Recurring</h4>
    <div>
        <dt class="payment-method>
            <label for="p_method_NORM_">
                <input type="radio" id="p_method_NORM_" value="NORM" name="payment[method]" title="">
            Overschrijving
            </label>
        </dt>
        <dd>
            //content not important
        </dd>
    </div>
    <h4>Transfers</h4>
    <div>
        <dt class="payment-method">
            <label for="p_method_FIRL_">
                <input type="radio" id="p_method_FIRL_" value="FIRL" name="payment[method]" title="">
            Overschrijving
            </label>
        </dt>
        <dd>
            //content not important
        </dd>
    </div>
 </dl>

请注意: dt/dd元素也会在主div中重复,因此有一个dt/dd元素的长列表,因此不按div分组:

代码语言:javascript
复制
<dl class="sp-methods">
    <h4>Recurring</h4>
    <div>
        <dt class="payment-method>
            <label for="p_method_NORM_">
                <input type="radio" id="p_method_NORM_" value="NORM" name="payment[method]" title="">
            Overschrijving
            </label>
        </dt>
        <dd>
            //content not important
        </dd>
        <dt class="payment-method>
            <label for="p_method_NORM_">
                <input type="radio" id="p_method_NORM_" value="NORM" name="payment[method]" title="">
            Overschrijving
            </label>
        </dt>
        <dd>
            //content not important
        </dd>
        <dt class="payment-method>
            <label for="p_method_NORM_">
                <input type="radio" id="p_method_NORM_" value="NORM" name="payment[method]" title="">
            Overschrijving
            </label>
        </dt>
        <dd>
            //content not important
        </dd>
        <dt class="payment-method>
            <label for="p_method_NORM_">
                <input type="radio" id="p_method_NORM_" value="NORM" name="payment[method]" title="">
            Overschrijving
            </label>
        </dt>
        <dd>
            //content not important
        </dd>
    </div>
 </dl>

我在无线电按钮的变化上切换了一个类,这样标签就会在视觉上发生变化。我遇到的问题是,我似乎无法在仍然与$j(this)相关的情况下切换正确的元素,因为dt元素有时位于它自己的div中,有时它与其他div位于主div中,因此我不能使用.siblings。至少我觉得。

请帮助,谢谢:)

代码语言:javascript
复制
$j('.sp-methods label input[type=radio]').change(function() {
    $j('.sp-methods .payment-method').removeClass("checked");
    $j(this).parent().parent().addClass("checked").siblings().removeClass("checked");
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-03 13:54:41

下面的javascript足以涵盖这两种情况,我使用jquery closest来访问dt,而不是使用2个parent函数调用:

代码语言:javascript
复制
$('.sp-methods label input[type=radio]').change(function() {
        // first reach the closes dl and find all the dt and remove the class checked
        $(this).closest('.sp-methods').find('.payment-method').removeClass("checked");
        // then find the closest dt and add the class checked
        $(this).closest('dt').addClass("checked");
    });

在标记中有一个问题,您忽略了一些dt元素的class属性的引号:

<dt class="payment-method>应为<dt class="payment-method">

代码片段:

代码语言:javascript
复制
$('.sp-methods label input[type=radio]').change(function() {
        $(this).closest('.sp-methods').find('.payment-method').removeClass("checked");
        $(this).closest('dt').addClass("checked");
    });
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<dl class="sp-methods">
    <h4>Recurring</h4>
    <div>
        <dt class="payment-method">
            <label for="p_method_NORM_">
                <input type="radio" id="p_method_NORM_" value="NORM" name="payment[method]" title="">
            Overschrijving
            </label>
        </dt>
        <dd>
            //content not important
        </dd>
    </div>
    <h4>Transfers</h4>
    <div>
        <dt class="payment-method">
            <label for="p_method_FIRL_">
                <input type="radio" id="p_method_FIRL_" value="FIRL" name="payment[method]" title="">
            Overschrijving
            </label>
        </dt>
        <dd>
            //content not important
        </dd>
    </div>
 </dl>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35773550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档