也许我一直在看这个太多了,但是为什么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 ......应该很简单......
答案 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);
});