Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS, jquery] Object groter dan ie lijkt

Pagina: 1
Acties:

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 22:40
Ik heb een object (array) met form velden/selects etc waarvan ik dmv de jquery filter functie dingen uit heb gefiltert.
Als ik nu met firebug dit bekijk klopt het alleen niet. Als ik de .length ed bekijk zie ik wat ik wil.
Maar toch staan ze er op een rare manier nog in.
OK klinkt wazig dus heb een plaatje gemaakt.
Ik wil de alleen de velden die ik zie als ik de console.log doe van this.elements, maar blijkbaar staan de anderen (op oa index 20) er toch nog in.
Hoe kan het dat die beelden niet consistent zijn?

Afbeeldingslocatie: http://znmail.nl/js_klein.png

Verwijderd

hoe haal je de elementen eruit? deleten van elementen verkort een array niet (zet de keys op undefined), je moet werken met pop of splice

weet je overigens zeker dat het een array is het geen htmlelementcollection? (die live zijn)

[ Voor 25% gewijzigd door Verwijderd op 18-09-2007 22:06 ]


  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 22:40
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
this.elements = jQuery(this.currentForm)
            .find("input, select, textarea, button")
            .not(":submit")
            .not(":reset")
            .not( this.settings.ignore )
            .filter(function() {
//              !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);

                // select only the first element for each name, and only those with rules specified
                if ( this.id in validator.rulesCache || !validator.rules(this).length )
                    return false;

                validator.rulesCache[this.id] = validator.rules(this);
                return true;
            });


Dit dus. Zoals ik al zei met filter.
Wat bedoel je met html elementencollection en live...?

En hoe kan het dat je dus rechtsonder in het plaatje ziet dat elements 3 + 11 more groot is en dat toch veel meer inzitten?

[ Voor 8% gewijzigd door chielsen op 18-09-2007 22:13 ]


  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 22:40
Hmm na lang kijken.. Volgens mij zet die filter functie de uitgefilterde elementen achteraan en zet daarna de length op het resultaat wanneer alleen de overgebleven elementen zouden worden geteld...

Verwijderd

daarom ben ik ook vaak wat sceptisch over het gebruik van js libraries. Ze maken je code korter en soms ook wat fraaier, maar vaak ook een stuk onoverzichtelijker (ik vind "document.getElementById" nog altijd veelzeggender dan "$")

Verder heb je (itt libs bij programmeertalen) geen performancewinst ofzo, de boel is niet precompiled en methods zijn vaak behoorlijk uitgebreid om er zoveel mogelijk functionaliteit in te stoppen, dat maakt de boel (wat) trager.

mijn tip: gebruik geen libraries als je niet goed op de hoogte bent wat ze doen. Dat betekent of docs lezen, of de js uitpluizen.

gemak van coden weegt niet altijd op tegen leesbaarheid en onderhoudbaarheid (bijvoorbeeld door mensen die de library niet kennen)

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 22:40
Nou over het algemeen ben ik heel erg tevreden met die libraries. Ik ben eigenlijk php programmeur, en heb geen zin om 2x het wiel uit te vinden.
Och nu weet ik dit tenminste en kan ik weer lekker verder. Het heeft me al heel veel werk bespaart, en ik vind het ook belangrijk dat de code er fraai/overzichtelijk uit ziet.
Pagina: 1