Detta är en annan post i min pågående serie om hur du använder jQuery med SharePoint.
Om du vill veta mer om jQuery, Jag rekommenderar: jQuery i aktion av Björn Bibeault och Yehuda Katz.
Tidigare, Jag skrev om hur du använder jQuery att lokalisera och dölja ett textfält i ett formulär. Jag brydde mig för det specifika tillvägagångssättet (Jag kedja föräldrar – det är helt enkelt inte gjort dessa dagar, åtminstone i familjer med kvalitet).
När jag först började att tänka på det, Jag visste att jag behövde till finna en <TR> som jag kunde åberopa Dölj() metoden. Min tidiga försök att hitta rätt <TR> var ungefär så här:
$("tr:har(input[titel = gömma mig!])');
Problemet med det är att det skulle finna varje <TR> tag som hade någon överordnad relation till gömma mig! fältet, även om gömma mig! är kapslade många nivåer djupt i <TR>'s. Det visar sig att min sandlåda formuläret, Detta uttryck finner 9 olika TR som har gömma mig! som ett barn någonstans i sin DOM-trädet. Jag insåg att jag kunde gå tillbaka upp trädet från fältet sig, så det är hur jag hamnade missbrukar föräldrar, men det sitta inte bra med mig.
Jag gav en tanke till detta och en av de saker jag läser slutligen är meningsfullt: Jag kunde använda inte() metoden att trimma ut <TR>: s jag inte vill ha i min inslagna som. Som ledde mig till detta:
$("tr:har(input[titel = gömma mig!])').inte("tr:har(TR)').Dölj();
Den första biten hittar alla de <TR> Taggar som har gömma mig! fältet var som helst i deras egen hierarki. Det sedan remsor ut någon <TR> Det har också ett barn <TR>. Detta lämnar oss med en enda <TR> som:
1) Har ingen <TR> underordnade poster
2) Har fältet som barn.
Vi kan sedan använda Dölj() metod att den resulterande och vi är klar.
Jag är fortfarande lite nervös om detta, men inte lika nervös som kedja föräldrar.
Jag vet inte om detta är en bästa praxis eller inte. Det kan vara ett mer lämpligt sätt att identifiera just den <TR> att vi bryr oss om i en SharePoint form. Om du vet, Vänligen skriv en kommentar.
</slutet>
Följ mig på Twitter vid http://www.twitter.com/pagalvin
Hej Paul,
Paul Culmsee av smarta lösningar skrev en artikel om exakt samma fråga (att hitta rätt TR att dölja ett fält) med hjälp av vanlig JavaScript, inte jQuery. Han hittade ett universellt sätt att hitta TR att dölja, Det är i slutet av denna blogpost : http://www.cleverworkarounds.com/2008/02/07/more-sharepoint-branding-customisation-using-javascript-part-1/
hoppas det hjälper,
Jonathan
Pingback: Dölja ett fält i SharePoint Redigera formulär som baseras på andra värden « jbmurphy.com