рд╣рдо jQuery рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рднрд╛рдЧ рддреАрди, jQuery рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд▓рд╕

рджреЛ рд╣рдлреНрддреЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ jQuery рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд▓рдЧрдЗрди рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдФрд░ рд╡рд╣рд╛рдБ рд░реБрдХрдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╡рд╛рджреЛрдВ рдХреЛ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЖрдЬ рдореИрдВ рдЙрди рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рдореБрдЦреНрдп рдХреЛрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред



рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд▓рдЧрдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  1. рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬреЛ рдЙрдирдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ;
  2. рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдмрд╛рдж рдЙрдард╛рдИ рдЧрдИ рдИрд╡реЗрдВрдЯ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб jquery.tmplPlus.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:



<script src="Scripts/jquery-1.5.js" type="text/javascript"></script> <script src="Scripts/jquery.tmpl.js" type="text/javascript"></script> <script src="Scripts/jquery.tmplPlus.js" type="text/javascript"></script>
      
      









рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб



рдЯреАрдореЛрдВ рдХреЛ рдмреБрд▓рд╛рдУ



рд╕рднреА рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, jQuery.tmplCmd () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдЖрд╣реНрд╡рд╛рди рдХреЗ рддреАрди рд░реВрдк рд╣реИрдВ:

  1. jQuery.tmplCmd (рдХрдорд╛рдВрдб, tmplItem)
  2. jQuery.tmplCmd (рдХрдорд╛рдВрдб, tmplItems)
  3. jQuery.tmplCmd (рдХрдорд╛рдВрдб, рдбреЗрдЯрд╛, tmplItems)


рдХрдорд╛рдВрдб рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдорд╛рдВрдб рдирд╛рдо ( рдЕрдкрдбреЗрдЯ , рд╣рдЯрд╛рдиреЗ , рдмрджрд▓рдиреЗ рдпрд╛ рдЦреЛрдЬрдиреЗ ) рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



TmlItem рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рддрджрдиреБрд╕рд╛рд░, tmplItems рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдбреЗрдЯрд╛ рддрддреНрд╡ рдпрд╛ рдРрд╕реЗ рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ tmplItems рд╕рд░рдгреА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдСрдкрд░реЗрд╢рди рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рддрддреНрд╡реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд▓реЛрдЧ рд╣реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:











рдкреНрд░рддреНрдпреЗрдХ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЗрди рддреАрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рдЖрд╣реНрд╡рд╛рди рд▓рд╛рдЧреВ рд╣реИ, рдореИрдВ рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реВрдВрдЧрд╛ред



рдХрдорд╛рдВрдб рдХреЛ рдмрджрд▓реЗрдВ



рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрдорд╛рдВрдб рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдХреНрд░рдо рдХреЛ рдЙрд╕рдХреЗ рддрд░реНрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдкреБрди: рд░реЗрдВрдбрд░ рдХрд┐рдП рдмрд┐рдирд╛ред



рдпрд╣ рдЖрджреЗрд╢ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ:

  1. jQuery.tmplCmd ('рдмрджрд▓реЗрдВ', рдбреЗрдЯрд╛, tmplItems)


рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХреЙрд▓ рдХреЗ рдмрд╛рдж, рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рддрддреНрд╡ рдбреЗрдЯрд╛ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЫрдБрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕рдорд╛рдзрд╛рди!



рдЖрдЗрдП рдЕрдм рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдореИрдВ рдЬреЛ рдбреЗрдЯрд╛ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ рд╡рд╣ рдбреЗрдЯрд╛рдЗрдореНрд╕ рд╕рд░рдгреА рдореЗрдВ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб Samples.htm рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ):



 var dataItems = [ { firstName: '', lastName: '' }, { firstName: ' ', lastName: '' }, ... ];
      
      





рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:



 <script id="item_tmpl" type="text/x-jquery-tmpl"> <tr class="item"> <td>${firstName}</td> <td>${lastName}</td> <td> <img src="Images/item-edit.png" class="item-edit" title="Edit" /> <img src="Images/item-delete.png" class="item-delete" title="Delete" > </td> </tr> </script>
      
      





рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ tmplItems рд╕рд░рдгреА рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ :



 $('#item_tmpl').tmpl(dataItems, options).appendTo('#items_bag'); tmplItems = $('#items_bag .item').map(function () { return $.tmplItem(this); }).get();
      
      





рдореИрдВ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЯреЗрдмрд▓ рд╣реЗрдбрд░ рдореЗрдВ рд╕реЙрд░реНрдЯ-рдПрд╕реНрдХ рдФрд░ рд╕реЙрд░реНрдЯ-рдбреАрдПрд╕рд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдЪрд┐рддреНрд░реЛрдВ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ x- рдлрд╝реАрд▓реНрдб-рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрд╕рдХрд╛ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИ:



 <table id="items_bag"> <tr> <th>First Name <img src="Images/sort-asc.png" class="sort-asc" x-field-name="firstName" alt="" /> <img src="Images/sort-desc.png" class="sort-desc" x-field-name="firstName" alt="" /> </th> <th>Last Name <img src="Images/sort-asc.png" class="sort-asc" x-field-name="lastName" alt="" /> <img src="Images/sort-desc.png" class="sort-desc" x-field-name="lastName" alt="" /> </th> <th></th> </tr> </table>
      
      





рдЖрд░реЛрд╣реА рдЫрдБрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 $('#items_bag').delegate('.sort-asc', 'click', function () { var fieldName = $(this).attr('x-field-name'); dataItems.sort(function (a, b) { return compareStrings(a[fieldName], b[fieldName]); }); tmplItems = $.tmplCmd('replace', dataItems, tmplItems); });
      
      





рдпрд╣рд╛рдБ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдирд╛рдо рдХреЛ рдЫрд╛рдБрдЯрдирд╛ рд╣реИ:



 var fieldName = $(this).attr('x-field-name');
      
      





рдлрд┐рд░ рдореИрдВ рдбреЗрдЯрд╛ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ:



 dataItems.sort(function (a, b) { return compareStrings(a[fieldName], b[fieldName]); });
      
      





рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ:



 tmplItems = $.tmplCmd('replace', dataItems, tmplItems);
      
      





рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрдорд╛рдВрдб, рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд╕реНрдерд┐рдд рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреЗ рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рджрд┐рдП рдЧрдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ tmplItems рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рд░рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ ред



рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдЫрдВрдЯрдиреА рдХрд╛ рдХреЛрдб рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ:



 $('#items_bag').delegate('.sort-desc', 'click', function () { var fieldName = $(this).attr('x-field-name'); dataItems.sort(function (a, b) { return compareStrings(a[fieldName], b[fieldName]); }).reverse(); tmplItems = $.tmplCmd('replace', dataItems, tmplItems); });
      
      





рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:







рдЕрджреНрдпрддрди рдЖрджреЗрд╢



рдЕрдкрдбреЗрдЯ рдХрдорд╛рдВрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдкрдбреЗрдЯ () рд╡рд┐рдзрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реИред



рдпрд╣ рдЖрджреЗрд╢ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░, рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдЖрджреЗрд╢ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрди рд╕рднреА рд░реВрдкреЛрдВ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВ:

  1. jQuery.tmplCmd ('рдЕрдкрдбреЗрдЯ', tmplItem)
  2. jQuery.tmplCmd ('рдЕрдкрдбреЗрдЯ', tmplItems)
  3. jQuery.tmplCmd ('рдЕрдкрдбреЗрдЯ', рдбреЗрдЯрд╛, tmplItems)


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдЯреЗрдмрд▓ рдПрдбрд┐рдЯрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЛрдб Samples.htm рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ)ред рдЖрдЗрдЯрдо рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 $('#items_bag').delegate('.item-edit', 'click', function () { var tmplItem = $.tmplItem(this); var dataItem = tmplItem.data; editDialog.show(dataItem, function () { $.tmplCmd('update', tmplItem); }); });
      
      





рдпрд╣рд╛рдВ рдореБрдЭреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рд▓рд┐рдВрдХ рдФрд░ рдбреЗрдЯрд╛ рдЖрдЗрдЯрдо рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдЧрд╛:



 var tmplItem = $.tmplItem(this); var dataItem = tmplItem.data;
      
      





рдлрд┐рд░ рдореИрдВ рдПрдХ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдбреЗрдЯрд╛ рдЖрдЗрдЯрдо рдФрд░ рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 editDialog.show(dataItem, function () { $.tmplCmd('update', tmplItem); });
      
      





рдФрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдореИрдВ рдЕрдкрдбреЗрдЯ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



 $.tmplCmd('update', tmplItem);
      
      





рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:







рдХрдорд╛рдВрдб рдирд┐рдХрд╛рд▓реЗрдВ



рд╣рдЯрд╛рдП рдЧрдП рдХрдорд╛рдВрдб, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред рдЕрджреНрдпрддрди рдЖрджреЗрд╢ рдХреА рддрд░рд╣, рдЗрд╕рдореЗрдВ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд╣реНрд╡рд╛рди рд╣реИрдВ:

  1. jQuery.tmplCmd ('рдирд┐рдХрд╛рд▓реЗрдВ', tmplItem)
  2. jQuery.tmplCmd ('рдирд┐рдХрд╛рд▓реЗрдВ', tmplItems)
  3. jQuery.tmplCmd ('рдирд┐рдХрд╛рд▓реЗрдВ', рдбреЗрдЯрд╛, tmplItems)


рдЗрд╕ рдХрдорд╛рдВрдб рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ tmplItems рд╕рд░рдгреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рднреА рд╣рдЯрд╛рддрд╛ рд╣реИ!



рдпрд╣, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ - рдПрдХ рддрд░рдл, рдпрд╣ рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ tmplItems рд╕рд░рдгреА рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдПрдХ рдЕрдкреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕ рдЯреАрдо рдХреЛ рдХреЛрдИ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред



рддрд╛рд▓рд┐рдХрд╛ рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 $('#items_bag').delegate('.item-delete', 'click', function () { var tmplItem = $.tmplItem(this); var dataItem = tmplItem.data; if (confirm('Do you really want to delete "' + dataItem.firstName + ' ' + dataItem.lastName + '"?')) { dataItems.splice(jQuery.inArray(dataItem, dataItems), 1); $.tmplCmd('remove', dataItem, tmplItems); updateDebugInfo(); } });
      
      





рдпрд╣рд╛рдВ рдореБрдЭреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рд▓рд┐рдВрдХ рдФрд░ рдбреЗрдЯрд╛ рдЖрдЗрдЯрдо рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдЧрд╛:



 var tmplItem = $.tmplItem(this); var dataItem = tmplItem.data;
      
      





рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ dataItems рд╕рд░рдгреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ :



 dataItems.splice(jQuery.inArray(dataItem, dataItems), 1);
      
      





рдФрд░ рдлрд┐рд░ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ рдФрд░ рдЙрд╕реА рд╕рдордп рдЯреЗрдВрдкрд▓реЗрдЯреНрд╕ рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ :



 $.tmplCmd('remove', dataItem, tmplItems);
      
      





рдЕрдкрдбреЗрдЯрдбрдмрдЧрдЗрдиреНрдлреЛ () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 function updateDebugInfo() { $('#data_items_length').text(dataItems.length); $('#tmpl_items_length').text(tmplItems.length); }
      
      





рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ ред



рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:







рдЖрдЬреНрдЮрд╛ рдкрд╛рдУ



рдЦреЛрдЬ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕рд╛рде рдЕрджреНрдпрддрди рдФрд░ рдХрдорд╛рдВрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП , рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ "рд╕реНрдкреЙрдЯ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд╕рднреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред



рдпрд╣ рдЖрджреЗрд╢ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

  1. jQuery.tmplCmd ('рдвреВрдВрдвреЗрдВ', рдбреЗрдЯрд╛, tmplItems)


рдЗрд╕ рдЖрджреЗрд╢ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдбреЗрдЯрд╛ рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рд╣реИред



рдЦреЛрдЬ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЛрдб Samples.htm рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ):



 $('#item_rnd').click(function () { var dataItem = dataItems[Math.round(Math.random() * (dataItems.length - 1))]; var tmplItem = $.tmplCmd('find', dataItem, tmplItems)[0]; $(tmplItem.nodes).css('background-color', '#ff0000'); $(tmplItem.nodes).animate({ 'background-color': '#ffffff' }, 1500); });
      
      





рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдПрдХ рдбреЗрдЯрд╛ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВ:



 var dataItem = dataItems[Math.round(Math.random() * (dataItems.length - 1))];
      
      





рдлрд┐рд░, рдЦреЛрдЬ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдореБрдЭреЗ рдпрд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдЖрдЗрдЯрдо рдХрд┐рд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ:



 var tmplItem = $.tmplCmd('find', dataItem, tmplItems)[0];
      
      





рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЗрд╕реА рдкрдВрдХреНрддрд┐ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реВрдВ:



 $(tmplItem.nodes).css('background-color', '#ff0000'); $(tmplItem.nodes).animate({ 'background-color': '#ffffff' }, 1500);
      
      





рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╡реЗрджрди рдореЗрдВ, рдЕрджреНрдпрддрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, AJAX рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред



рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:







рд░реЗрдВрдбрд░ рдХреА рдЧрдИ рдШрдЯрдирд╛



рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдШрдЯрдирд╛ рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред



рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, .tmpl () рдХреЙрд▓ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:



 var options = { rendered: function (tmplItem) { if (window.console) { console.log("rendered: %s %s", tmplItem.data.firstName, tmplItem.data.lastName); } } }; $('#item_tmpl').tmpl(dataItems, options).appendTo('#items_bag');
      
      





рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдЬрд╣рд╛рдВ рдЗрд╕ рдШрдЯрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рд░ рдмрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, рдПрдХ рд╕рдВрджреЗрд╢ рдбрд┐рдмрдЧ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрдорд╛рдВрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрди: рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрдорд╛рдВрдб рдХреЗрд╡рд▓ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред



рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:







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



рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб, рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рднреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк ASP.NET CDN рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдпрд╛ рд╕реАрдзреЗ GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ jQuery рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



JQuery рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рд▓реЗрдЦрди jQuery рдкреНрд░рд▓реЗрдЦрди рд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред



All Articles