使用parentsUntil删除所选选项

时间:2012-01-19 23:53:52

标签: jquery

我可能会以错误的方式解决这个问题。我有一个链接和表单选项的容器。单击链接时,它会选择一个选项。为了取消选择另一个选项,我需要迭代父元素直到一个特定的类,然后删除该选项的选定值。

以下是一些HTML。

<ul class="cssClass">
  <li><div class="first-elem">Select<span></span></div>
    <ul>
        <li><a href="#firstValue">First Value</a></li>
        <li><a href="#secondValue">Second Value</a></li>
    </ul>
  </li>
  <li>
    <select name="someSelect">
        <option value="">Select</option>
        <option value="firstValue">First Value</option>
        <option value="secondValue">Second Value</option>
    </select> 
  </li>
</ul>

这是jQuery的开始。一切都在工作,除了我的removeAttr部分,所以我排除了其余部分。

$(".cssClass li a").click(function(e) {
  e.preventDefault();
    $(this).parentsUntil('.cssClass','option').removeAttr("selected");

但这不起作用。还有另一种方法吗?

4 个答案:

答案 0 :(得分:2)

parentsUntil的第二个参数是过滤,而不是进行选择查询。 更好地利用这个

 $(this).closest('.cssClass').find('option').removeAttr("selected");

答案 1 :(得分:1)

parentsUntil的第一个参数不正确。它应该是这样的:

 $(this).parentsUntil($('ul.cssClass'), 'option').removeAttr("selected");

parentsUntil的第一个参数应为:

  

包含选择器表达式的字符串,用于指示停止匹配祖先元素的位置。

你的第二个参数没问题,但是,由于第二个参数不是.find,而是一个过滤器,因此select语句实际上并没有找到要删除的选项。 所以你可能需要使用不同的东西,例如:

$('ul.cssClass option:selected').removeAttr('selected');

答案 2 :(得分:0)

我不知道标记,但也许你试图以另一种方式去做这件事:

$("#theselectbox option:selected").removeAttr("selected");

答案 3 :(得分:0)

给予该标记:

$(".cssClass li a").click(function(e) {
    e.preventDefault();
    $('select[name="someSelect"]').find('option[value="' + this.href.substring(1) + '"]').prop('selected',true);
});