4 Stimmen

Verwendung des jQuery-Selektors mit einem Dom-Element

Ich habe eine Javascript-Funktion, die ein Dom-Element als Parameter empfängt. In dieser Funktion versuche ich, zum nächsten Vorfahren "form" zu gelangen. Ich wollte zu verwenden:

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

hier ist obj ein Dom-Element vom Typ submit. Ich scheine es einfach nicht zum Laufen zu bringen.
Kann mir bitte jemand helfen?

3voto

Tomalak Punkte 320467

Sie wollen

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

Das Ergebnis der jQuery-Auswahl-/Traversalfunktionen immer ist ein Array, möglicherweise mit nur einem Element, aber immer noch ein Array. Index in das Array, um tatsächliche DOM-Elemente zu erhalten.

Sie können dies jedoch auch ohne jQuery tun, solange obj ist ein Eingabe-/Auswahl-/Textarea-Element.

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

Der Vollständigkeit halber könnten Sie auch in jQuery bleiben und Folgendes tun

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

1voto

user278064 Punkte 9738
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;
   }
}

Verwenden Sie es so

var closestForm = closest(obj, 'FORM')

1voto

Matthew Abbott Punkte 58885

form1 wäre ein jQuery-Objekt, also können Sie entweder .attr("id") oder auf das DOM-Element selbst mit [0].id :

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

var form2 = $(obj).closest("form")[0];
alert(form2.id);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X