jquery
  • closest
  • 2012-06-22 28 views 0 likes 
    0

    我试图在单击按钮时获取<select>的值。该<select>直接即将在DOM的按钮,我试图用.closest()直接在点击按钮之上获取<select>的值

    我的来源是 -

    <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“未定义” -

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

    请获取代码的工作(或建议更好的方式去了解它)的帮助。谢谢。

    回答

    2

    改变你的函数,像这样:

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

    e是事件,而不是引用您点击的元素(和你的按钮的id是#doaction2

    +0

    兄弟你错过了右括号')':)仅供参考 –

    +0

    谢谢。我的键盘错过了很多字符,经常出现拼写错误。我需要改变它:) – fcalderan

    +0

    谢谢 - 我不认为'.prev()'适合在这种情况下,但显然我错了!没有很好的工作。 –

    1

    eclick是指event对象,我想你的意思是$(this)。此外,你靶向错了按钮,你正在寻找的ID是doaction2

    而且,不知道这是一个错字,但你需要一个额外的)$('#doaction').click()

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

    但既然你有已分配的ID select元素,我可能会建议你干脆直接目标是:

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

    这样,只要您的HTML的变化,你仍然可以得到正确的行为。

    +0

    感谢e'这'this',我认为'之间的差异性的交代他们是一样的。错字已被更正! –

    1

    我觉得

    $('#doaction') 
    

    应该

    ​​

    全码

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

    我有两个按钮,我只是错误地复制了错误的源代码,但它们都存在(并且'.click()'事件对两者都正常工作)。谢谢。 –

    1
    $(function() { 
        $('#doaction2').click(function(e){ 
        action = $('#doaction2').prev().val(); 
        console.log(action); 
    
        }); 
    }); 
    
    相关问题