QueryBuilder = function(id) { this.id = id; this.sed = 0; }; QueryBuilder.prototype.setFields = function(fields) { this.fields = fields; }; QueryBuilder.prototype.setData = function(data) { this.data = data; }; QueryBuilder.prototype.setUrl = function(url) { this.url = url; }; QueryBuilder.prototype.genId = function() { return this.sed++; }; QueryBuilder.prototype.render = function() { this.renderMenu(); this.renderFields(); var self = this; $(document).delegate('.queryBuilderAdd', 'click', function(e) { self.addField(e.target.title); }); $(document).delegate('.queryBuilderDelete', 'click', function(e) { var el = e.target.parentNode.parentNode; el.parentNode.removeChild(el); }); $(document).delegate('', 'hide.bs.dropdown', function(e) { if ($(e.relatedTarget).parent().hasClass('queryBuilderField')) { e.preventDefault(); } }); $(document).on('click.bs.dropdown.data-api', function(e) { if ($(e.target).parents('.queryBuilderField').length == 0) { $('.queryBuilderField.dropdown').each(function(index, item) { $(item).removeClass('open'); var name = item.getAttribute('title'); $('#' + item.id + ' .queryBuilderValue').html( $('#' + item.id + ' .queryBuilderName').val() ); }); } }); $(document).delegate('#queryBuilderButton', 'click', function() { self.submit(); }); }; QueryBuilder.prototype.renderMenu = function() { var el = document.getElementById(this.id + 'Menu'); var html = ''; for (var key in this.fields) { var field = this.fields[key]; html += '