Table & Dialog with Data Tags

Example of populating a single Modal Dialog with data from table rows using the "data" attributes. Modal implementation excluded.

by BenjaminRay

HTML

<h3>
Outages
</h3>
<table class="outage-list">
  <thead>
    <tr>
      <th>ID</th>
      <th>Name</th>
    </tr>
  </thead>
  <tbody>
    <tr data-outage-id="1" data-outage-email="[email protected]" data-outage-desc="Description of outage 1">
      <td><a href="#">ID 1</a></td>
      <td>Outage 1</td>
    </tr>
    <tr data-outage-id="2" data-outage-email="[email protected]" data-outage-desc="Description of outage 2">
      <td><a href="#">ID 2</a></td>
      <td>Outage 2</td>
    </tr>
    <tr data-outage-id="3" data-outage-email="[email protected]" data-outage-desc="Description of outage 3">
      <td><a href="#">ID 3</a></td>
      <td>Outage 3</td>
    </tr>
  </tbody>
</table>

<div id="fake-dialog">
  <h3>Details for Outage # <span class="val-outage-id"></span></h3>
  <table>
    <tr>
      <td class="lbl">ID:</td>
      <td class="val-outage-id"></td>
    </tr>
    <tr>
      <td class="lbl">Email:</td>
      <td class="val-outage-email"></td>
    </tr>
    <tr>
      <td class="lbl">Description:</td>
      <td class="val-outage-desc"></td>
    </tr>
  </table>
</div>

CSS

body {
  font-family: arial;
  font-size: 14px;
  padding: 20px;
}
h3 {
  font-size: 22px;
  border-bottom: 1px solid #ddf;
  margin-bottom: 10px;
}
.outage-list thead {
  background-color: #568;
  color: #fff;
}
.outage-list td, .outage-list th {
  padding: 5px 15px;
}
.outage-list td {
  border: 1px solid #ddd;
  border-top-width: 0px;
}

#fake-dialog {
  display: none;
  width: 400px;
  padding: 20px;
  margin: 20px 0;
  border: 1px solid #ddd;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
  -webkit-box-shadow: 5px 5px 10px 0px rgba(0, 0, 0, 0.25);
  -moz-box-shadow: 5px 5px 10px 0px rgba(0, 0, 0, 0.25);
  box-shadow: 5px 5px 10px 0px rgba(0, 0, 0, 0.25);
}

JavaScript

$(function() {
  $('.outage-list a').on('click', function(e) {
    e.preventDefault(); // Prevent default link behaviour
    $('#fake-dialog').show();
    $('#fake-dialog .val-outage-id').html($(this).closest('tr').attr('data-outage-id'));
    $('#fake-dialog .val-outage-email').html($(this).closest('tr').attr('data-outage-email'));
    $('#fake-dialog .val-outage-desc').html($(this).closest('tr').attr('data-outage-desc'));
  });
});