Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>OK, here's a solution to your update. However ids are meant to be unique so you shouldn't have 2 or more same ids. Classes are the tool in general use-cases. You may add unique ids if unique columns are required but not using them as reference in the context of locking, but extract the id when you want to do something with it.</p> <p>Here are the examples:</p> <p><a href="http://jsbin.com/odaxil/5" rel="nofollow">http://jsbin.com/odaxil/5</a></p> <p><a href="http://jsbin.com/odaxil/5/edit" rel="nofollow">http://jsbin.com/odaxil/5/edit</a></p> <p><strong>js:</strong></p> <pre><code>(function (window, undefined) { jQuery(function () { bindings(); }); function bindings() { var locker = jQuery('#locker'); jQuery(document).on('click', 'button.lockButton', function () { var that = $(this), lidClass = '', parent = that.parents('td[class^="lid"]'); if (parent.length) { lidClass = getColumnLidClass(parent); lockings = jQuery('td.' + lidClass); lockings.addClass('locked'); that.text('Unlock'); var fixedColumn = $(getLockedWrapper(lockings, lidClass)); var index = parent.index(); fixedColumn.data('index', index); if (index === 0) { locker.prepend(fixedColumn); } else { var lockedWraps = $('div.lockedWrap', locker), lwrap = null, indx, appended = false; if (!lockedWraps.length) locker.append(fixedColumn); lockedWraps.each(function () { lwrap = $(this); indx = lwrap.data('index') * 1; if (!appended &amp;&amp; (index &lt; indx)) { lwrap.before(fixedColumn); appended = true; return; } }); if (!appended) locker.append(fixedColumn); } that.text('Lock'); } else { parent = that.parents('div.lockedWrap'); lidClass = getColumnLidClass(parent); lockings = jQuery('td.' + lidClass); lockings.removeClass('locked'); parent.remove(); } }); } function getLockedWrapper(lockings, lidClass) { var fixedColumn = [], cont; lockings.each(function () { cont = $(this).html(); fixedColumn.push('&lt;div class="cellWrap"&gt;' + cont + '&lt;/div&gt;'); }); fixedColumn = '&lt;div class="' + lidClass + ' lockedWrap"&gt;' + fixedColumn.join('') + '&lt;/div&gt;'; return fixedColumn; } function getColumnLidClass(td) { for (var i = 0; i &lt; 100; i++) { if (td.hasClass('lid_' + i)) break; } return 'lid_' + i; } })(); </code></pre> <p><strong>HTML:</strong></p> <pre><code>&lt;div id="locker"&gt;&lt;/div&gt; &lt;div style="float: left; width: 75%; overflow-x: scroll;"&gt; &lt;table style="width: 200% !important;"&gt; &lt;tr&gt; &lt;td class="lid_1" colspan="3"&gt; &lt;div style="margin-top: 3px;"&gt;January 24, 2013 &lt;button class="lockButton" id="lid_1"&gt;Lock&lt;/button&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="lid_2" colspan="3"&gt; &lt;div style="margin-top: 3px;"&gt;January 25, 2013 &lt;button class="lockButton" id="lid_2"&gt;Lock&lt;/button&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="lid_3" colspan="3"&gt; &lt;div style="margin-top: 3px;"&gt;January 26, 2013 &lt;button class="lockButton" id="lid_3"&gt;Lock&lt;/button&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="lid_4" colspan="3"&gt; &lt;div style="margin-top: 3px;"&gt;January 27, 2013 &lt;button class="lockButton" id="lid_4"&gt;Lock&lt;/button&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="lid_5" colspan="3"&gt; &lt;div style="margin-top: 3px;"&gt;January 27, 2013 &lt;button class="lockButton" id="lid_5"&gt;Lock&lt;/button&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="lid_6" colspan="3"&gt; &lt;div style="margin-top: 3px;"&gt;January 28, 2013 &lt;button class="lockButton" id="lid_6"&gt;Lock&lt;/button&gt; &lt;/div&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="lid_1"&gt;Header 1&lt;/td&gt; &lt;td class="lid_1"&gt;Header 2&lt;/td&gt; &lt;td class="lid_1"&gt;Header 3&lt;/td&gt; &lt;td class="lid_2"&gt;Header 1&lt;/td&gt; &lt;td class="lid_2"&gt;Header 2&lt;/td&gt; &lt;td class="lid_2"&gt;Header 3&lt;/td&gt; &lt;td class="lid_3"&gt;Header 1&lt;/td&gt; &lt;td class="lid_3"&gt;Header 2&lt;/td&gt; &lt;td class="lid_3"&gt;Header 3&lt;/td&gt; &lt;td class="lid_4"&gt;Header 1&lt;/td&gt; &lt;td class="lid_4"&gt;Header 2&lt;/td&gt; &lt;td class="lid_4"&gt;Header 3&lt;/td&gt; &lt;td class="lid_5"&gt;Header 1&lt;/td&gt; &lt;td class="lid_5"&gt;Header 2&lt;/td&gt; &lt;td class="lid_5"&gt;Header 3&lt;/td&gt; &lt;td class="lid_6"&gt;Header 1&lt;/td&gt; &lt;td class="lid_6"&gt;Header 2&lt;/td&gt; &lt;td class="lid_6"&gt;Header 3&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="lid_1" colspan="3"&gt; &lt;table style="width:100.1%; margin-top: -17px !important; margin-left: -1px !important;"&gt; &lt;tr&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;br/&gt; &lt;/table&gt; &lt;/td&gt; &lt;td class="lid_2" colspan="3"&gt; &lt;table style="width:100.1%; margin-top: -17px !important; margin-left: -1px !important;"&gt; &lt;tr&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;br/&gt; &lt;/table&gt; &lt;/td&gt; &lt;td class="lid_3" colspan="3"&gt; &lt;table style="width:100.1%; margin-top: -17px !important; margin-left: -1px !important;"&gt; &lt;tr&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;br/&gt; &lt;/table&gt; &lt;/td&gt; &lt;td class="lid_4" colspan="3"&gt; &lt;table style="width:100.1%; margin-top: -17px !important; margin-left: -1px !important;"&gt; &lt;tr&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;br/&gt; &lt;/table&gt; &lt;/td&gt; &lt;td class="lid_5" colspan="3"&gt; &lt;table style="width:100.1%; margin-top: -17px !important; margin-left: -1px !important;"&gt; &lt;tr&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;br/&gt; &lt;/table&gt; &lt;/td&gt; &lt;td class="lid_6" colspan="3"&gt; &lt;table style="width:100.1%; margin-top: -17px !important; margin-left: -1px !important;"&gt; &lt;tr&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;br/&gt; &lt;/table&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; </code></pre> <p><strong>CSS:</strong></p> <pre><code>.locked{ display:none; } #locker{ float: left; min-width: 100px; min-height: 110px; background-color: #333; } div.lockedWrap{ float:left; margin-right:1px; background-color: orange; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload