2014-02-14 49 views
0

也許我一直在看這太多,但是如何不提醒選擇標記的ID ......?爲什麼最接近的選擇標記返回對象而不是選擇

這裏是代碼我跟打:

<select id="one"> 
    <option>an option</option> 
    <option>another option</option> 
</select> 

<button id="btn" >look a button</button> 

$("#btn").click(function() { 
    var c = $(this).closest(".one").id; 
    alert(c); 
}); 

那是HMTL和JavaScript ...應該是輕鬆的一年...

+0

這是一個ID - 只是做'$(「#一個」)' –

+0

我嘗試過學習等功能......除了沒有取得什麼從學習其他功能,謝謝。 – user2405469

回答

2

closest()用於獲取第一祖先元素與您的選擇器匹配。你需要prev()siblings()這裏:

var c = $(this).prev().attr('id'); 

或:

var c = $(this).siblings("#one").attr('id'); 

因爲select是在這種情況下,一個元素或您的按鈕的兄弟姐妹

+0

@ user2405469很高興幫助!快樂編碼伴侶:) – Felix

+1

該評論是我整天閱讀的最好的東西,謝謝!將在兩分鐘內接受... – user2405469

3

closest()返回最近的祖先元素匹配給定選擇器,在你的情況下,它是以前的兄弟姐妹,所以使用.prev()

但那些jQuery的遍歷方法返回不具有id屬性,以便讀取使用.attr()

$("#btn").click(function() { 
    var c = $(this).prev("#one").attr('id');//as @Felix pointed out one is the id not a class 
    //since you have an id for the select element you can use an id selector 
    // like c = $('#one').val(); 
    alert(c); 
}); 
+1

它應該是'#一個'不''.one'或只是'prev()' – Felix

+0

@Felix錯過了那種情況,爲什麼甚至使用遍歷方法....只是使用ID選擇器並忘記它 –

2

因爲所有 jQuery選擇返回的jQuery對象的id屬性值,在其上jQuery對象附加jQuery方法可以鏈接。如果您要訪問原始的元素,你可以使用[0]

$("#btn").click(function() { 
    var c = $(this).closest(".one")[0].id; 
    alert(c); 
}); 
相關問題