0

HTML:

<dl id="feature-list">
    <dt id="basic" class="category-name">
    <dd id="basic-toggle" class="category-recepient">
        <div class="feature">
            <div class="feature-content">
            <input id="checkbox1" type="checkbox">
        </div>
        </div>
    </dd>
    <dt id="options" class="category-name">
    <dd id="options-toggle" class="category-recepient">
        <div class="feature">
            <div class="feature-content">
            <input id="checkbox2" type="checkbox">
        </div>
        </div>
    </dd>
</dl> 

查询

$('input').change(function () {
    var value = $(this).closest("dt");
    //do something with value.id
});

$(this).closest("dt")返回复选框而不是<dt id="(category)" class="category-name">

我试过了$(this).closest(.category-name)$(this).closest("dt").find(.category-name)

4

2 回答 2

4

<dt>不是 的祖先<dd>,所以最接近的()永远不会找到它。

于 2011-06-24T07:33:29.567 回答
2

尝试:

$(this).parents('dd:first').prev('dt'); // or prev('.category-name')

演示:http: //jsfiddle.net/fJkUq/

您还需要关闭<dt>标签,它们不应包含<dd>,而是与它们相邻。

于 2011-06-24T07:30:19.617 回答