2009-05-07 5 views

Antwort

6

Ich führe den Code auf einem Klick-Ereignis. Der HTML-Code, den Sie geschrieben haben, ist ziemlich genau richtig, aber für den mir unbekannten Grund funktioniert es nicht. Ich habe jedoch eine Arbeit gefunden. (Ich versuche, eine kommagetrennte Zeichenfolge aller Werte in der ersten td für die sichtbaren Zeilen zu erhalten). Jedenfalls wird die folgende Arbeit erledigt.

var notfirst = false; 
    var serials = ""; 
    var tds = $("table.SimpleTable tbody tr:visible td:first-child"); 
    for (var i = 0; i < tds.length; i++) { 
     var td = $(tds[i]); 
     if (td.is(":hidden")) 
      continue; 
     if (notfirst) 
      serials += ","; 
     else 
      notfirst = true; 

     serials += $.trim(td.text()); 
    } 

Aus irgendeinem Grund das: hidden Tag korrekt funktioniert, aber nicht das: sichtbar in IE7

6

Das sollte funktionieren. Mit HTML-Code, der wie folgt aussieht:

<table class='SimpleTable'> 
    <tr style='display: none;'> 
    <td>test1</td> 
    </tr> 
    <tr> 
    <td>test2</td> 
    </tr> 
    <tr> 
    <td>test3</td> 
    </tr> 
    <tr style='display: none;'> 
    <td>test4</td> 
    </tr> 
    <tr> 
    <td>test5</td> 
    </tr> 
    <tr> 
    <td>test6</td> 
    </tr> 
</table> 

dies zu tun:

$("table.SimpleTable tbody tr:visible td:first-child").css('color','red'); 

macht die Farbe Rot in Firefox, IE7 für mich. Wie sieht dein HTML aus?

Here's what I tested the above on

EDIT: Es ist mir sehr seltsam, dass Sie tun müssen, was Sie gerade tun. Sie sollten in der Lage sein, zu ersetzen, was Sie jetzt mit diesem haben:

var serials = []; 
$("table.SimpleTable tbody tr:visible td:first-child").each(function() { 
    serials.push($.trim($(this).text())); 
}); 
var serials = serials.join(','); 

Wenn die TDs von dem Selektor bevölkert werden sie nur die sichtbar diejenigen sein sollen. Wenn Sie versteckte TDs in die Serien bekommen (was ich betonen muss, sollte eigentlich nicht passieren und ist ein Bug oder ein Zeichen eines Fehlers irgendwo), versuchen Sie diese Wähler statt:

$("table.SimpleTable tbody tr:not(:hidden) td:first-child") 
+0

Wenn ich die Chance bekomme ich die Wähler versuchen Sie erwähnt haben. Ich mag jedoch die serails.push() und die serials.join (",") viel besser als das was ich habe und werde das mit Sicherheit umsetzen. Vielen Dank. –

3

Aus Dokumentation:

„wie: sichtbar berechnet wurde geändert in jQuery 1.3.2 Elemente als sichtbar angenommen, wenn sie und ihre Eltern Raum in dem Dokument verbraucht CSS Sicht nicht in Rechnung getragen wird...“

Vielleicht hat das etwas damit zu tun. Versuchen Sie es mit einem Klassenselektor oder etwas anstelle von tr: sichtbar

3

warum teilen Sie es nicht ein bisschen auf?

$("table.SimpleTable").find("tr:visible").find("td:first-child").text() 

?

+0

Ich habe dies für einzelne Auswahl, nützlich, danke. – merveotesi

Verwandte Themen