将类添加到最近的输入字段

时间:2014-07-16 09:44:50

标签: javascript jquery

您好我正在尝试将类添加到最近的输入字段。 但是这个班永远不会被添加。

这是我的代码:

$(document).ready(function() {

    xaxa = '';

    $("input[name=handle_value]:radio").click(function() {
        self.parent.parent.xaxa = $(this).val();
    });

    $("#close").click(function() {
        parent.$.fancybox.close();
    });
    $("a#handle").fancybox({
        'type': 'iframe',
        'beforeLoad': function() {
            $(this).closest('.handlefield').addClass('handle-change');
        },
        'afterClose': function() {
            $('.handle-change').val(xaxa);
            $('.handlefield').removeClass('handle-change');
        },
    });
});

HTML:

<div class="form-group">
    <label class="col-sm-3 control-label">{% trans %}Houder{% endtrans %}</label>
         <div class="col-sm-2">
              <div class="input-group">
                   <span class="input-group-addon"><i class="fa fa-user fa-fw"></i></span>
                                {{ form_widget(form.registerProfileRegistrant, { 'attr': {'class': 'form-control handlefield', 'value': profile.pdbRegisterProfileRegistrantHandle } }) }} 
                    <span class="input-group-addon"><a id="handle" href="{{ path('iframe') }}"><i class="fa fa-link fa-fw"></i></a></span>
               </div>
          </div>
</div>

inputfield通过twig生成html:

<input type="text" id="profile_registerProfileRegistrant" name="profile[registerProfileRegistrant]" class="form-control handlefield" value="PTG0000003">

2 个答案:

答案 0 :(得分:1)

.closest()仅适用于父母元素,它不会遍历完整的DOM树。

因此,请回到最近的.input-group,然后在.find()的孩子中搜索您的输入:

$("a#handle").fancybox({
    'type': 'iframe',
    'beforeLoad': function() {
        $(this).closest('.input-group').find('.handlefield').addClass('handle-change');
    },
    'afterClose': function() {
        $('.handle-change').val(xaxa);
        $('.handlefield').removeClass('handle-change');
    },
});

答案 1 :(得分:0)

经过多次尝试,这对我有用:

$(this).parents(".input-group").find('.handlefield').addClass('handle-change');