为什么nearest()选择器在这个实例中不起作用?

时间:2011-06-05 16:09:38

标签: javascript jquery jquery-selectors

我正在尝试在单击单选按钮时激活特定图像上的toggleClass()。我已经尝试了很长时间才能让它工作但不能。我可以设法选择单选按钮的父元素,但没有任何进展。我试过next(),nextAll()和nearest()。所有这些似乎都没有做我想要实现的目标。

这是我的jQuery函数:

$(document).ready(function() {
  $("input[type=radio]").change(function () {
    if (this.value == "AM") {
      $(this).closest('img[title="am"]').toggleClass('houdini');
    } else if (this.value == "PM") {
    alert('PM');
/*      Something here */
    } else {
        return false();
    }
  });
});

和我的HTML:

<tr>
    <td><input type="radio" name="bisley" value="AM" />AM<input type="radio" name="bisley" value="PM" />PM<span class="compname">Bisley</span></td>
    <td>Fit more into less space</td>
    <td class="time"><img src="/images/generic/openday/tick.png" alt="tick" title="am" class="houdini" />10.00AM</td>
    <td class="time"><img src="/images/generic/openday/tick.png" alt="tick" title="pm" class="houdini" />1.30PM</td>
</tr>

2 个答案:

答案 0 :(得分:3)

closest搜索祖先元素; nextnextAll搜索同级元素。您想要的img元素是兄弟元素的子元素,因此您需要更复杂的语句。跟上这个:

$(this).closest('tr').find('img[title="am"]').toggleClass('houdini');

这说“找到最近的祖先tr元素,然后在其中找到img[title="am"]

答案 1 :(得分:0)

更改为

$(this).parent().children('img[title="am"]').toggleClass('houdini');

<强> SEE DEMO