使用带有dom元素的jQuery选择器

时间:2011-08-21 10:21:23

标签: dom object jquery-selectors parameter-passing

我有一个javascript函数,它接收一个dom元素作为参数。在这个函数中,我试图找到最接近的祖先'形式'。我想用:

function submit_form(obj)
{
    var form1 = $(obj).closest("form");
    alert (form1.id);
}

这里obj是提交类型的dom元素。我似乎并没有让它发挥作用 有人可以帮忙吗?

3 个答案:

答案 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);