5

我正在使用 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 />字段选择 a 才能更改 this 的类<div>。我怎么做?我需要父选择器吗?我有点困惑。请帮忙。非常感谢你!

4

4 回答 4

8

你不能只用一个选择器来做到这一点。您将需要像当前一样选择输入元素,然后使用该.closest()方法获取祖先div

var controlGroup = $('input[name="field_1"]').closest('.control-group');
于 2012-11-22T12:23:08.577 回答
3

您可以使用 .closest():

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

或使用父母():

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

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

于 2012-11-22T12:23:47.853 回答
2

查看 jQuery .closest():

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

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

于 2012-11-22T12:26:48.390 回答
0

您可以使用

$('input[name="field_1"]').parents('.control-group:first')
于 2012-11-22T12:23:36.927 回答