我正在尝试编写一个简单的函数来避免代码复制并从输入中返回一个值,但是当我尝试通过函数返回它时,我只是得到“未定义”。
任何想法为什么?
function get_selected_id() {
return $(this).parents("tr").find("input[name*=page_id]").val();
}
$("a").click( function(e) {
e.preventDefault();
alert(get_selected_id()); // RETURNS UNDEFINED
alert($(this).parents("tr").find("input[name*=page_id]").val()); // RETURNS 123
});
html(非常简化):
<table>
<tr>
<td>page id <input type="hidden" value="123" name="page_id[]" /></td>
<td><a href="#">Click</a></td>
</tr>
</table>
答案 0 :(得分:1)
您没有将值传递给get_selected_id()
。因此,当函数尝试返回$(this)
时,它是未定义的,因为它无法匹配任何元素。您必须将所单击的元素作为参数传递!
尝试
function get_selected_id(e) {
return e.parents("tr").find("input[name*=page_id]").val();
}
$("a").click( function(e) {
e.preventDefault();
alert(get_selected_id($(this))); // RETURNS 123
alert($(this).parents("tr").find("input[name*=page_id]").val()); // RETURNS 123
});
答案 1 :(得分:0)
javascript中的关键字与上下文有关。
尝试将$(this)作为参数传递给您的函数:
function get_selected_id(obj) {
return obj.parents("tr").find("input[name*=page_id]").val();
}
alert(get_selected_id($(this)));