使用jQuery,选择下一个<select>框并更改其值</select>

时间:2011-05-23 16:35:25

标签: jquery ajax jquery-selectors css-selectors

根据标题,我可以做任何事情,除了选择正确的方框。

页面布局基本上是几个链接(class =“class”),每个链接(class =“games”)旁边有一个选择框(选择框和链接之间有一些元素)。我正在尝试仅更改所单击链接旁边的选择框的值。

*编辑*

这里有一个关于我正在使用的HTML的更好示例的小提琴:http://jsfiddle.net/ynSeZ/9/

---我已经尝试了所有建议的答案,但没有一个有效。感谢到目前为止的所有努力! ---

这就是我到目前为止..当我删除最近的()部分时,它可以工作..但是它会改变每个选择框的值,而不是最接近链接的方式。

提前谢谢, 菲尔

4 个答案:

答案 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)
});

小提琴:http://jsfiddle.net/maniator/ynSeZ/12/

答案 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中的轻微错误阻止了第二个链接工作。更新。

相关问题