问题描述
||
根据标题,除了选择正确的框外,我可以执行所有操作。
页面布局基本上是几个链接(class = \“ class \”),然后是每个链接(class = \“ games \”)的选择框(在选择框和链接之间有一些元素)。我正在尝试仅更改被单击链接旁边的选择框的值。
*编辑*
这是我正在使用的HTML更好示例的小提琴:http://jsfiddle.net/ynSeZ/9/
---我尝试了所有建议的答案,但都没有成功。感谢到目前为止的努力! ---
这是我到目前为止所拥有的..当我删除最接近的()部分时,它可以工作..但是它改变了每个选择框的值,而不仅仅是改变了最接近链接的方式。
提前致谢,
菲尔
解决方法
这是你的答案。使用
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
元素。上面的代码所做的是获取页面上的第一个select元素,不一定是最接近a
标记的元素。
更新
这是根据您最新的小提琴得出的答案:
$(\'.pick_team\').click(function() {
var objectID = $(this).attr(\'team_id\');
var select_object = $(\'select\',$(this).parent().parent());
select_object.val(objectID)
});
小提琴:http://jsfiddle.net/maniator/ynSeZ/12/
,您应该更改HTML,以便被单击的链接只有一个\“ sibling \”选择元素。像这样:
...
<div class=\"container\">
<a href=\"#\" class=\"class\" ... >Value 1</a>
<a href=\"#\" class=\"class\" ... >Value 2</a>
<select>
<option>Foo</option>
...
</select>
</div>
然后在Javascript中执行此操作,以获取正确的select元素:
$(this).sibling(\"select\")
其中“ 8”是单击的链接。
closest
函数有点误导。它找到与给定选择器匹配的元素的最接近的祖先。
,是时候制作好老式的ѭ10循环了:
$(\'.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中的轻微错别字使第二个链接无法正常工作。更新。
,也许是这样的吗?
更新
这将抓住同一行中的选择框,并将值设置为单击的链接的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\");
});