рдПрдХ рдкреЗрдбрд╝ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШрдЯрдХ

рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╡реЗрдм-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ рдкреЗрдЬ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рдкреЗрдбрд╝ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдШрдЯрдХ рдХреЛ рдЖрдкрдХреЛ рдкреЗрдбрд╝ рдХреЗ рдиреЛрдбреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ / рдкрддрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рдПрдХ рддрддреНрд╡ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдкреЗрдбрд╝ рдореЗрдВ рдирдП рдиреЛрдб рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЯреНрд░реАрд╡реНрдпреВ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдмреЗрд╣рддрд░ - рдЖрдзреБрдирд┐рдХ (IE9 +) рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП "рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ" рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИрдВ, рд░рдирдЯрд╛рдЗрдо рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╡реЗрдм тАЛтАЛрдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдЖрдВрддрд░рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рднреАрддрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдПрдХ рдЕрдиреНрдп рдмрд┐рдВрджреБ рд╡рд╣ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд░реНрд╡рд░ рдкрд╛рд░реНрдЯ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ ASP.NET MVC рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рдШрдЯрдХ рдХреЛ рдПрдХ NuGet рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ ASP.NET MVC рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдореМрдЬреВрджрд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдФрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдПрдХ рдФрд░ рдмрд╛рдЗрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕рд╛рде рдореЗрд░рд╛ рдЕрдкрдирд╛, рд▓рд╛рдареА рдФрд░ рдЧреЗрдЯрд╡реЗ рдХреЗ рд╕рд╛рде ред


рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЖрдк рддрддреНрд╡реЛрдВ рдХреЗ рдкреЗрдбрд╝ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╣ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдШрдЯрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
  1. jsTree рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж jsTree рдкрд░ habrahabr рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдбрд╛рдпрдирд╛рдЯреНрд░реА рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред
  2. jqTree рдпрд╣ рд╕рдмрд╕реЗ рд╕реБрдЦрдж рдЫрд╛рдк рдмрдирд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЕрдЪреНрдЫреЗ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдХрд╛рд░рдгред
  3. jQuery рдЯреНрд░реА рд╡реНрдпреВ рдкреНрд▓рдЧрдЗрди ред рд▓реЗрдЦрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдм рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ jqTree рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддреА рд╣реИред
  4. Dynatree ред
  5. dhtmlxTree
  6. dTree

рдХреБрдЫ рдирд┐рд╖реНрдХрд░реНрд╖ред

рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХрд╛ рд╡рдЬрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдП рдмрд┐рдирд╛ ASP.NET MVC рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдорд╛рдирдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓, рдЕрдиреБрдХреВрд▓ред рдмрд╛рдЗрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

CSS рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  1. рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рдЕрдиреБрд░реВрдк рд╡рд░реНрдЧ рдирд╛рдо рдкреЗрдбрд╝ рдХреЗ рдХрдВрдЯреЗрдирд░ рддрддреНрд╡ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдореЛрдВ рдХреЗ рдЪрдпрдирдХрд░реНрддрд╛ рд╕рдВрджрд░реНрдн- рдмрдЪреНрдЪреЗ рд╣реИрдВ , рдЬрд╣рд╛рдВ рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ рд╡рд░реНрдЧ рдХреЛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдореВрд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдо рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдмрдирд╛рдП рдмрд┐рдирд╛ рдЯреИрдЧ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред LESS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдРрд╕реЗ CSS рдирд┐рдпрдо рд╕реБрдВрджрд░ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдмрди рдЬрд╛рддреЗ рд╣реИрдВред
рдХрдорд╕реАрдПрд╕рдПрд╕
.resnyanskiy-tree > ul.container { border: 1px dotted gray; font-family: Tahoma; font-size: 10pt; padding: 1px; li { list-style-type: none; background-image: url(images/vline.png); background-repeat: repeat-y; ul { padding-left: 16px; } span { span { height: 16px; } } ... } 
 .resnyanskiy-tree > ul.container { border: 1px dotted gray; font-family: Tahoma; font-size: 10pt; padding: 1px; } .resnyanskiy-tree > ul.container li { list-style-type: none; background-image: url(images/vline.png); background-repeat: repeat-y; } .resnyanskiy-tree > ul.container li ul { padding-left: 16px; } .resnyanskiy-tree > ul.container li span span { height: 16px; } ... 
рдореБрдЦреНрдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╛рд╕ Tree рдореЗрдВ рддреАрди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рджрд╕реНрдп рд╣реЛрддреЗ рд╣реИрдВред
рджреЛ рдирд┐рдЬреА рддрд░реАрдХреЗ renderNodeItemsTo(...) рдХрд░рддреЗ рд╣реИрдВ renderNodeItemsTo(...) рдФрд░ toggleNodeItemsVisible(...) рдореВрд▓ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред DOM рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ / рд╣рдЯрд╛рдХрд░ рдкреЗрдбрд╝ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рджреГрд╢реНрдпрддрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( Element.removeChild(...) - jsperf рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
toggleNodeItemsVisible(...) рд╡рд┐рдзрд┐ false рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреНрд░реА рдиреЛрдб (JS рдСрдмреНрдЬреЗрдХреНрдЯ) рдореЗрдВ рдХреЛрдИ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, onBranchExpand рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рд╢рд░реНрдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд▓рдЧрддреА рд╣реИ:

 if(!this.toggleNodeItemsVisible(node) && (this.onBranchExpand instanceof Function)) { this.onBranchExpand(nodeId); } 

рдЕрдиреНрдп рдЪреАрдЬрд╝реЛрдВ рдХреЗ рдмреАрдЪ, рдПрдХ рдШрдЯрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ + рд▓реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╢реЛрдзрди рдХрд░рддрд╛ рд╣реИред

GitHub - github.com/resnyanskiy/js.tree
рдиреБрдЧреЗрдЯ - nuget.org/packages/resnyanskiy.js.tree

Source: https://habr.com/ru/post/In183434/


All Articles