<html>
<head>
<style>
.standardTable { border:1px solid;padding:4px; margin: 8px;}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Binding inside of base prototypes</title>
</head>
<body>
<div id='standardTable' class='standardTable'>
Your table goes here
</div>
<div id='basicPageTable' class='standardTable'>
Your basicPageTable goes here
</div>
<div id='pageWithSectionsTable' class='standardTable'>
Your pageWithSectionsTable goes here
</div>
<hr style="margin: 10px;"/>
<h3>Messages</h3>
<div id='msgBox' class='standardTable'>No messages yet</div>
</body>
</html>
var MsgBox = {
appendMsg: function(msg) {
$('#msgBox').text($('#msgBox').text() + '; ' + msg);
}
};
var Table = function(tableConfig){
var _self = this;
var _options = $.extend({tableDiv: 'standardTable'},tableConfig);
this.onRowClicked = function() {
MsgBox.appendMsg('row clicked');
if (_options.rowClickCallback){
_options.rowClickCallback();
}
};
var init = function() {
$('#'+_options.tableDiv).click(_self.onRowClicked);
};
init();
};
var BasicPage = function(pageConfig){
var _self = this;
var _table;
var _options = pageConfig || {};
this.getTable = function() { return _table; };
var _onRowClickedHandler = function() {
_self.onRowClicked();
};
this.onRowClicked = function() {
MsgBox.appendMsg('BasicPage onRowClicked');
};
var init = function() {
var defaultTableConfig = {
tableDiv: 'basicPageTable',
rowClickCallback: _onRowClickedHandler
};
var tableConfig;
if (_options.tableConfig) {
tableConfig = $.extend(true, {}, defaultTableConfig, _options.tableConfig);
} else {
tableConfig = defaultTableConfig;
}
_table = new Table(tableConfig);
};
init();
};
/** @extends BasicPage **/
var PageWithSections = function(pageConfig){
var _self = this;
BasicPage.call(this, pageConfig);
/** @override **/
this.onRowClicked = function() {
MsgBox.appendMsg('PageWithSections onRowClicked');
};
};
var basicTable = new Table();
var basicPage = new BasicPage();
var pageWithSections = new PageWithSections({tableConfig:{tableDiv:'pageWithSectionsTable'}});
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |