jQuery .jede Funktion ist in allen Browsern (funktioniert im ff, ie8, ie7 nicht)
Ich ve wurde Herumspielen mit dieser viel zu lange, und es geschafft, IE8 funktioniert, aber IE7 hat mich ratlos.
Ich habe eine Tabelle, und für jede Spalte, die ich versuche, zu extrahieren, eine Anzahl von divs. Ich bin nur extrahieren divs, die mit bestimmten Selektoren werden nicht alle divs in der Spalte.
Meine ursprüngliche jquery-Selektor wurde
jQuery('div.a1, div.a3, div.a4, div.a7','table#" +tableId+' td:nth-child('+columnNum+')').each(function(){ alert(jQuery(this).attr('id')); });
Diese hat Super funktioniert im FF, aber nicht auslösen .jede Funktion überhaupt im IE.
Nach Herumspielen, ein wenig, ich habe
jQuery('td:nth-child('+columnNum+') > div.a1, td:nth-child('+columnNum+') > div.a3, td:nth-child('+columnNum+') > div.a4,td:nth-child('+columnNum+') > div.a7', Tabelle#a+ " tableId).each(function(){ alert(jQuery (.attr('id')); });
Nicht so schön, aber funktioniert im IE8.
Ich hatte versucht, alle möglichen Kombinationen verwenden .eq(+'columnNum+'), aber nichts anderes war zu arbeiten.
Gehe ich jetzt und testen im IE7, und wieder die .jeder der nicht ausgelöst.
Was ist die schönste Art und Weise (und cross-browser-kompatibel) für die Arbeit mit dieser Art von .jedes element?
--------------neben--------------
Nach weiteren Tests und spielen, um mit Anregungen aus der DrJ und bdukes, ich habe festgestellt, dass in der Tabelle#'+tableId bricht die Funktion sowohl IE7&8.
Habe ich wieder zu meinem ursprünglichen code
jQuery('div.a1, div.a3, div.a4, div.a7','table#" +tableId+' td:nth-child('+columnNum+')').each(function(){ alert(jQuery(this).attr('id')); });
wie mir scheint, die meisten effiziente.
Wenn ich remove "Tisch#" +tableId, bekomme ich die korrekte Antwort in allen Browsern, außer, dass es nach addition der Ergebnisse aus allen Tabellen, und ich muss in der Lage sein, um nur die Ergebnisse aus einer Tabelle zu einer Zeit.
Ich habe auch versucht, "Tisch#" +tableId+'>td:nth-child('+columnNum+')').jeder, aber das funktioniert auch nicht.
Die erste Funktion, die ich verwendet habe, funktioniert einwandfrei im firefox.
----------------die html ausgewählt---------------------------
Die Tabellen werden dynamisch erstellt in javascript, also kann ich nicht wirklich kopieren und Vergangenheit, aber hier ist, wie die Ausgabe aussieht. Es endet auf der Suche ein bisschen wie ein gantt-Diagramm auf einen Tisch.
<table id="a1"> <tr> <th colspan="5"> Gruppe Name </th> </tr> <tr class="rowId1" > <td> <div class="a1" id="a43" style="margin-left:13px; width:60px" ></div> </td> <td> </td> <td> <div class="a3" id="a93" style="margin-left:4px; width: 80px" ></div> <div class="a2" id="a94" style="margin-left:4px; width: 30px" ></div> </td> <td> <div class="a1" id="a24" style="margin-left: 15px; width: 65px;" ></div> </td> <td> </td> </tr> </tr> <tr class="rowId1" > <td> <div class="a7" id="a24" style="margin-left:10px; width:60px" ></div> </td> <td> <div class="a2" id="a15" style="margin-left:14px; width: 22px" ></div> </td> <td> ; <div class="a2" id="a105" style="margin-left: 8px; width: 50px" ></div> </td> <td> </td> <td> <div class="a4" id="a102" style="margin-left: 5px; width: 45px;" ></div> </td> </tr> </table>
Dank DrJ Nein, das ist nicht das Problem. Das war nur ein Tippfehler.
Ich würde vermuten, dass es eher ein Problem mit dem Selektor als die
each
Funktion. Stellen Sie sicher, dass Sie tatsächlich auswählen, welche Sie erwarten, in jedem browser, brechen Sie jeden Abschnitt nach unten und sehen, wenn Sie herausfinden können, wo es immer die falschen Werte.Ach ja, soweit ich mich erinnere, auf IE, wenn Sie Leerzeichen vor oder nach > in Selektoren funktioniert es nicht. Versuchen Sie es mit "td:nth-child('+columnNum+')>div.a3" statt.
Können wir finden Sie in der HTML wird versucht zu wählen?
InformationsquelleAutor pedalpete | 2010-02-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es stellt sich heraus, das war ein Problem mit dem IE zu Versagen, wenn zwei verschiedene Elemente haben die gleiche ID. Anscheinend bricht die .jede Funktion.
Hatte ich zwei Tabellen
Tabelle.notes#a1 & Tisch.Eingänge#a1
Den .jede Funktion durchgelaufen haben sollte jedem Tisch, aber stattdessen fand weder.
jQuery würde auch nicht laufen im ie mit
die es getan haben sollte, als ich bin, Sie verweist direkt auf eine bestimmte Tabelle, auch wenn die id nicht eindeutig ist.
Bin ich mit id ' s aus der Datenbank abgerufen, für die id und IE nicht wie die id ist, die beginnen mit zahlen, so habe ich nur noch ein 'a' an den Anfang der id.
Jedoch ist es scheinbar nicht mag, entweder, so bin ich jetzt hinzufügen die ersten Buchstaben der Klasse und dann die '1' oder was auch immer die id-Nummer ist.
Löst dies das Problem.
InformationsquelleAutor pedalpete