jquery
  • closest
  • 2012-06-22 25 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); 
    
        }); 
    }); 
    
    相關問題