如何选择<input />字段周围的<div>?</div>

时间:2012-11-22 12:20:26

标签: jquery jquery-selectors

我正在使用jQuery执行我的第一步,需要帮助为我的问题选择合适的选择器。我在Django模板中有以下HTML:

{% for field in form %}

    <div class="control-group">

        <label class="control-label" for="{{ field.label }}">{{ field.label }}</label>

        <div class="controls">

            {% if field.html_name == "field_1" %}

                <input class="input-xlarge" id="{{ field.label }}" type="text" name="{{ field.html_name }}" />

            {% elif field.html_name == "field_2" %}

                <input class="input-mini" id="{{ field.label }}" type="text" name="{{ field.html_name }}" />

            {% endif %}

        </div>

    </div>

{% endfor %}

我需要对<input />字段执行某些操作,我有以下选择器:

var $inputField1 = $('input[name="field_1"]');
var $inputField2 = $('input[name="field_2"]');

我现在的问题是,我需要为特定的<div class="control-group"></div>字段选择<input />才能更改此<div>的类。我怎么做?我需要parent selector吗?我有点困惑。请帮忙。非常感谢你!

4 个答案:

答案 0 :(得分:8)

只有选择器才能做到这一点。您需要像现在一样选择输入元素,然后使用.closest() method获取祖先div

var controlGroup = $('input[name="field_1"]').closest('.control-group');

答案 1 :(得分:3)

您可以使用.closest():

var $inputField1 = $('input[name="field_1"]');
var $targetDiv = $inputField1.closest('.control-group');

或使用parent():

var $inputField1 = $('input[name="field_1"]');
var $targetDiv = $inputField1.parents('.control-group:eq(0)');

.closest()更好,因为它不会遍历所有DOM

答案 2 :(得分:2)

查看jQuery .closest():

http://api.jquery.com/closest/

...如果您想要更具体的答案,请告诉我们您想要对输入做些什么:)

答案 3 :(得分:0)

你可以使用

$('input[name="field_1"]').parents('.control-group:first')