我可能会以错误的方式解决这个问题。我有一个链接和表单选项的容器。单击链接时,它会选择一个选项。为了取消选择另一个选项,我需要迭代父元素直到一个特定的类,然后删除该选项的选定值。
以下是一些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");
但这不起作用。还有另一种方法吗?
答案 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);
});