2016-04-07 7 views
0

Hallo Ich habe eine Methode, die ein id als Parameter für meine Funktion akzeptiert:Wie bekommt man jquery variable Kinder?

function exportDetails($div) { 
    $($div).each(function() { 
     alert(this.id); 
}); 

ich alle id ‚s Tisch, die in diesem div, etwas Ähnliches wie diese sind erhalten müssen:

function exportDetails($div) { 
    $($div > table).each(function() { 
     alert(this.id); 
}); 

Hier ist, wie ich die Funktion nenne und jeder der itemDetails haben dynamisch generierten Tabellen und ich brauche ihre IDs zu erhalten, da sie alle einzigartig sind:

exportDetails.apply(this, [$('#itemDetails')]); 

Vielen Dank!

+0

Also, was ist dein Problem? –

+1

Ist das Ihr richtiger Code? Wenn ja, ist es mit Tippfehlern gespickt und würde Fehler in der Entwicklerkonsole werfen. Außerdem könnten/sollten Sie ein [jsFiddle] (https://jsfiddle.net/) einrichten, mit dem wir arbeiten können. –

+0

@NickZuber bitte noch einmal lesen – cxwilson

Antwort

0

Ihr Code ist nicht korrekt formatiert. Außerdem weiß ich nicht, ob Sie dieser Funktion eine Gruppe von Tabellen geben, die innerhalb Ihres $ div-Parameters liegen. Hier sind einige Optionen.

// this works if you pass in an element with nested table that have ids. 

function exportTableToCSV($div) { 
    $($div+ ' > table').each(function() { 
     alert($(this).attr('id')); 
    }); 
} 

// this works if you want to get all the HTML elements with an id or if you want to get all the ids of elements which also have the same class assigned to them. 

function exportTableToCSV($div) { 
    $($div).each(function() { 
     alert($(this).attr('id')); 
    }); 
} 

exportTableToCSV('div'); 

// or 

exportTableToCSV('.yourClass'); 
+0

Bitte, verwenden Sie nicht '$ (this) .attr ('id')' - das ist eine massive jQuery Code Geruch – Alnitak

+0

das erste, was nicht funktioniert hat nicht kompilieren. Ich brauche nur die Tabellen-IDs, die dynamisch beim Laden der Seite erstellt werden. – cxwilson

+0

Erstellen Sie einen Selektor, der die Tabellen erfasst und dann an die Funktion übergibt. Verwenden Sie die zweite Methode. Wie werden Ihre Tabellen dynamisch erstellt? Sie können einfach die ID abrufen, wenn sie dynamisch erstellt wird, und diesen Wert in ein Array verschieben. Ich müsste allerdings wissen, wie diese Tabellen erstellt werden. –

3

So etwas sollte funktionieren:

function exportDetails($div) { 
    return [].map.call($div.children('table'), function(table) { 
     return table.id; 
    }); 
} 

das heißt nur ein Array zurück das .id von jedem table Element als unmittelbarer Nachkomme $div gefunden enthält.

+0

Verwenden Sie 'Tabelle [ID]' als Selektor. Löscht alle leeren Zeichenfolgen und ist günstiger als das Ergebnis. – Thomas

+0

@Thomas ah, du meinst als ein Selektor zu bedeuten "nur Return-Tabellen, die ein' id' Attribut haben? Fairer Kommentar, aber unnötig, wenn die OP-Markierung garantiert, dass jede Tabelle bereits eine ID hat. – Alnitak