我有简单的HTML代码:
<input type='hidden' name='cat_id' value='123'/>
<a href='#' class='edit'>Edit</a>
<a href='#' class='delete delete-link'>Delete</a>
简单的JS代码:
$("a.delete-link").click(function() {
var id = $(this).prev($('input[name="cat_id"]')).val();
alert(id);
});
简单明了的一切,获取名为'cat_id'的先前输入值。但它只返回一个空字符串(值确实是定义的)。我想也许选择器错了:
var id = $(this).prev($('input[name="cat_id"]')).length;
alert(id);
退货1.工作。 我只是不知道发生了什么,并尝试了
var id = $(this).prev($('input[name="cat_id"]')).attr('name');
alert(id);
返回'undefined'。奇怪。有任何想法吗?试过prevAll而不是prev,效果是一样的。 jQuery版本是1.6.4
答案 0 :(得分:3)
$("a.delete-link").click(function() {
var id = $(this).prev('input[name="cat_id"]').val();
alert(id);
});
您应该将选择器表达式(字符串)传递给.prev()方法而不是jQuery对象。
答案 1 :(得分:2)
prev
方法采用选择器,而不是jQuery对象:
var id = $(this).prev('input[name="cat_id"]').val();
然而,在这种情况下,这对你没有帮助。由于选择器与前一个元素(编辑链接)不匹配,您将获得一个空的jQuery对象,val
将不会返回该ID。
您可以使用siblings
或prevAll
方法查找元素:
var id = $(this).siblings('input[name="cat_id"]').val();