我有一个javascript函数,它接收一个dom元素作为参数。在这个函数中,我试图找到最接近的祖先'形式'。我想用:
function submit_form(obj)
{
var form1 = $(obj).closest("form");
alert (form1.id);
}
这里obj是提交类型的dom元素。我似乎并没有让它发挥作用 有人可以帮忙吗?
答案 0 :(得分:2)
你想要
function submit_form(obj)
{
var form1 = $(obj).closest("form")[0];
alert (form1.id);
}
jQuery选择/遍历函数总是的结果是一个数组,可能只有一个元素,但仍然是一个数组。索引到数组中以获取实际的DOM元素。
但是,只要obj
是input / select / textarea元素,就可以在没有jQuery的情况下执行此操作。
function submit_form(obj)
{
var form1 = obj.form;
alert (form1.id);
}
为了完整起见,你也可以留在jQuery中并做
function submit_form(obj)
{
var $form1 = $(obj).closest("form");
alert ( $form1.attr("id") );
}
答案 1 :(得分:1)
function closest(obj, tagName) {
// Go up in the tree until you find the ancestor form
while (obj.parent !== null) {
if (obj.nodeType === 1) {
parent = obj.parentNode;
if (parent.tagName === tagName) {
return parent;
}
}
}
// If no form exists return null
if (obj.tagName !== tagName) {
return null;
}
}
以这种方式使用
var closestForm = closest(obj, 'FORM')
答案 2 :(得分:1)
form1
将是一个jQuery对象,因此您可以使用.attr("id")
,也可以使用[0].id
访问DOM元素:
var form1 = $(obj).closest("form");
alert(form1.attr("id"));
var form2 = $(obj).closest("form")[0];
alert(form2.id);