您好我正在尝试将类添加到最近的输入字段。 但是这个班永远不会被添加。
这是我的代码:
$(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">
答案 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');