直接在单击按钮上方获取<select>的值</select>

时间:2012-06-22 09:06:34

标签: jquery closest

单击按钮时,我正在尝试获取<select>的值。 <select>直接与DOM中的按钮有关,我正在尝试使用.closest()

我的来源是 -

<div class="alignleft actions">
    <select id='bulk-action-selection' name='bulk-action'>
        <option value='-1' selected='selected'>Bulk Actions</option>
        <option value="delete" >Delete</option>
        <option value="open" >Open Polls</option>
        <option value="close" >Close Polls</option>
        <option value="recast_allow" >Allow Recasting</option>
        <option value="recast_deny" >Prevent Recasting</option>
        <option value="votes_show" >Show Votes</option>
        <option value="votes_hide" >Hide Votes</option>
    </select>
    <input type="submit" name="Submit" id="doaction" class="button-secondary action" value="Apply"  />
</div>

我尝试使用的代码是(returnin'undefined' -

$('#doaction').click(function(e){
    action = $(e).closest('select').val();
});

请帮助让代码生效(或建议更好的方法)。感谢。

4 个答案:

答案 0 :(得分:2)

改变你的功能:

$('#doaction2').click(function(e){
    action = $(this).prev('select').val();
    // or action = $('#bulk-action-selection2').val();
})

e是事件,而不是您点击的元素的引用(并且您的按钮ID为#doaction2

答案 1 :(得分:1)

e内{p> click指的是event对象,我认为你的意思是$(this)。此外,您的目标是错误按钮,您要查找的ID为doaction2

此外,不确定这是否是拼写错误,但在)后需要额外$('#doaction').click()

$('#doaction2').click(function(e){
    action = $(this).prev('select').val();
}); // <-- this

但由于您已经为select元素分配了ID,我建议您直接定位它:

$('#doaction2').click(function(e){
    action = $('#bulk-action-selection2').val();
}); 

这样,无论何时HTML发生变化,您仍然可以获得正确的行为。

答案 2 :(得分:1)

我认为

$('#doaction')

应该是

$('#doaction2')

完整代码

$('#doaction2').click(function(e){
    action = $(e.target).prev('select').val();
});

答案 3 :(得分:1)

$(function() { 
  $('#doaction2').click(function(e){
    action = $('#doaction2').prev().val();
    console.log(action);

  });
});