Guest User

Untitled

a guest
Oct 13th, 2015
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 2.02 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4.  
  5. <script type="text/html" id="theTemplate">
  6.     <div class="row" data-content="text"></div>
  7. </script>
  8.  
  9. <div id="theContainer"></div>
  10. <hr>
  11. <div id="output"></div>
  12.  
  13. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
  14. <script src="jquery.loadTemplate-1.5.0.js"></script>
  15.  
  16. <script type="text/javascript">
  17.     var dataForTemplate = [
  18.         { text: "First Row", misc: "data" },
  19.         { text: "Second Row", misc: "different data" }
  20.     ];
  21.    
  22.     var afterInsertFx = function(jqElement, data) {
  23.         jqElement.data("test", data);
  24.     };
  25.    
  26.     // "afterInsert" occurs before the template was appended to the document.
  27.     // The append will wipe out jQuery.data().
  28.     // This craziness saves the data to the side and adds it after the templating is complete.
  29.     var saveMe = {};
  30.     var index = 0;
  31.     var UNIQUE_HTML5_DATA_ELEMENT_NAME = "data-somethingunique";
  32.    
  33.     var afterInsertFxSaveOnSide = function(jqElement, data) {
  34.         var button = jqElement.attr(UNIQUE_HTML5_DATA_ELEMENT_NAME, ++index);
  35.         saveMe[index] = data;
  36.     };
  37.    
  38.     var postAfterInsertDataFix = function() {
  39.         $.each($("#theContainer .row"), function(k, v) {
  40.             var jqElement = $(v)
  41.             jqElement.data("test", saveMe[jqElement.attr(UNIQUE_HTML5_DATA_ELEMENT_NAME)]);
  42.             jqElement.removeAttr(UNIQUE_HTML5_DATA_ELEMENT_NAME);
  43.         });    
  44.     };
  45.  
  46.     $(document).ready(function() {
  47.         $("#theContainer").loadTemplate("#theTemplate", dataForTemplate, { append: true, afterInsert: afterInsertFx });
  48.         $("#theContainer").loadTemplate("#theTemplate", dataForTemplate, { append: true, afterInsert: afterInsertFxSaveOnSide });
  49.         postAfterInsertDataFix();
  50.         $.each($("#theContainer .row"), function(k, v) {
  51.             console.log($(v).data("test"));
  52.             $("#output").append($("<div/>").text($(v).text() + ": " + $(v).data("test")) );
  53.         });
  54.     });
  55.    
  56. </script>
  57.  
  58. </body>
  59. </html>
Advertisement
Add Comment
Please, Sign In to add comment