根据标题,我可以做任何事情,除了选择正确的方框。
页面布局基本上是几个链接(class =“class”),每个链接(class =“games”)旁边有一个选择框(选择框和链接之间有一些元素)。我正在尝试仅更改所单击链接旁边的选择框的值。
*编辑*
这里有一个关于我正在使用的HTML的更好示例的小提琴:http://jsfiddle.net/ynSeZ/9/
---我已经尝试了所有建议的答案,但没有一个有效。感谢到目前为止的所有努力! ---
这就是我到目前为止..当我删除最近的()部分时,它可以工作..但是它会改变每个选择框的值,而不是最接近链接的方式。
提前谢谢, 菲尔答案 0 :(得分:2)
<击> 撞击>
<击>这是你的答案。使用siblings
代替closest
:
$('.class').click(function() {
var objectID = $(this).attr('objectID');
$($(this).siblings('.games').get(0)).val(objectID).attr('selected', true);
});
小提琴:http://jsfiddle.net/maniator/ynSeZ/3/
击><击> 撞击>
现在我考虑一下,上面的答案可能不正确。您必须实现某些内容才能获得最接近的select
元素。以上代码的作用是获取页面上的第一个选择元素,而不一定是最接近a
标记的元素
<强>更新强>
这是基于你最新小提琴的答案:
$('.pick_team').click(function() {
var objectID = $(this).attr('team_id');
var select_object = $('select', $(this).parent().parent());
select_object.val(objectID)
});
答案 1 :(得分:1)
您应该更改HTML,以便被点击的链接只有一个“兄弟”选择元素。像这样:
...
<div class="container">
<a href="#" class="class" ... >Value 1</a>
<a href="#" class="class" ... >Value 2</a>
<select>
<option>Foo</option>
...
</select>
</div>
然后在您的Javascript中执行此操作以获取正确的选择元素:
$(this).sibling("select")
其中this
是点击的链接。
closest
函数有点误导。它找到与给定选择器匹配的元素的最近祖先。
答案 2 :(得分:0)
也许是这样的?
<强>已更新强> 这将获取同一行中的选择框,并将值设置为所单击链接的team_id
$('.pick_team').click(function() {
var val = $(this).attr('team_id'); // grab the team id - we'll use this to determine the selected option in the select box
//alert(val); // debugging
$(this).closest('tr').find('select option[value="'+val+'"]').attr("selected","selected");
});
答案 3 :(得分:0)
一个好的,老式的while
循环的时间:
$('.class').click(function() {
$next = $(this).next();
while ($next.prop('tagName') !== 'SELECT' && $next.size() > 0)
{
$next = $next.next();
}
if ($next.prop('tagName') === 'SELECT')
{
$next.val($(this).attr('objectID'));
}
});
jsFiddle:http://jsfiddle.net/cM4B5/3/
编辑:jsFiddle中的轻微错误阻止了第二个链接工作。更新。