Dies steht in Beziehung zu meiner previous question about selecting visible elements. Nun, hier ist die Wendung: Nehmen wir an, ich möchte nur die ungeraden Kinder aus der Menge der sichtbaren Kinder eines Elements auswählen. Was wäre der beste Weg, dies zu tun?PrototypeJS: Auswählen der ungeraden Untergruppe sichtbarer Kinder
Edit: hier ist ein Beispiel für meine Eingabe und erwartete Ausgabe.
<!-- A list with some visible and invisible children -->
<ul class="stripe">
<li>Visible 1</li>
<li style="display:none;">Visible 2</li>
<li style="display:none;">Visible 3</li>
<li>Visible 4</li>
<li style="display:none;">Visible 5</li>
<li>Visible 6</li>
<li>Visible 7</li>
</ul>
<!-- Only the visible children. -->
<li>Visible 1</li>
<li>Visible 4</li>
<li>Visible 6</li>
<li>Visible 7</li>
<!-- The "odd" visible children. -->
<li>Visible 1</li>
<li>Visible 6</li>
Ich kam mit zwei Möglichkeiten. Das eine funktioniert, das andere nicht.
// Method one: Returns the odd children whether they are visible or not. :(
var listChildren = $$("ul.stripe > li");
var oddChildren = allChildren
.findAll(function(el) { return el.visible(); })
.findAll(function(el) { return el.match("li:nth-child(odd)"); });
oddChildren.invoke("addClassName", "odd");
Was ich momentan tue, ist nun folgende:
// Method two: grouping!
var listChildren = $$("ul.stripe > li");
var oddChildren = listChildren
.findAll(function(el) { return el.visible(); })
.eachSlice(2, function(el) {
el[0].addClassName("odd");
});
Dieser Code scheint, wie es verbessert werden könnte. Kann jemand einen besseren Weg vorschlagen, dies zu erreichen?
Dieser Code hat es in die Produktion geschafft! –
Toll Zack zu hören :) – hobodave