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

发布于 2024-11-30 10:02:02 字数 242 浏览 1 评论 0原文

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

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

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

I have a javascript function that receives a dom element as a parameter. In this function I am trying to get to the closest ancestor 'form'. I wanted to use:

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

here obj is a dom element of submit type. I just don't seem to get it working.
Could someone please help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

守护在此方 2024-12-07 10:02:02

你想要

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") );
}

You want

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

The result of jQuery selection/traversal functions always is an array, possibly with one element only, but still an array. Index into the array to get actual DOM elements.

However, you can do this without jQuery as long as obj is an input/select/textarea element.

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

For the sake of completeness, you could also stay within jQuery and do

function submit_form(obj)
{
    var $form1 = $(obj).closest("form");
    alert ( $form1.attr("id") );
}
空城旧梦 2024-12-07 10:02:02
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')
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;
   }
}

Use it in this way

var closestForm = closest(obj, 'FORM')
哆兒滾 2024-12-07 10:02:02

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

form1 would be a jQuery object, so you can either use .attr("id"), or access the DOM element itself using [0].id:

var form1 = $(obj).closest("form");
alert(form1.attr("id"));

var form2 = $(obj).closest("form")[0];
alert(form2.id);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文