为什么最近的选择标签返回对象而不是选择

时间:2014-02-14 17:01:27

标签: jquery closest

也许我一直在看这个太多了,但是为什么select标签的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 ......应该很简单......

3 个答案:

答案 0 :(得分:3)

closest()返回与给定选择器匹配的最接近的祖先元素,在您的情况下,它是前一个兄弟,因此请使用.prev()

但是那些jQuery遍历方法返回一个没有id属性的jQuery对象,所以使用.attr()读取id属性值

$("#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 :(得分:2)

closest()用于获取与您的选择器匹配的第一个祖先元素。您需要prev()siblings()

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

或:

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

因为在这种情况下select是按钮的前一个元素或兄弟

答案 2 :(得分:2)

因为所有 jQuery选择器返回jQuery对象,可以链接其他jQuery方法。如果要访问raw元素,可以使用[0]

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