I want to create dynamic objects using jquery..
I know I can use this method
$('#container').append('<div class="relation"><input type="text" name="relation"></div>');
but in this way, the html string will be a very long to achieve.
i have this html
<div class="box-content">
<fieldset>
<legend><h6>Select Conditions</h6></legend>
<div class="control-group" id="relation_container">
<div class="relation-parent_0">
<div class="relation-left" id="relation_0">
<select name="key[]" id="key_0" class="relation-select">
<option value="">Select Brand</option>
<option value="">Select Brand</option>
</select>
<select name="condition[]" id="condition_0" class="relation-select">
<option value="">Select Brand</option>
<option value="">Select Brand</option>
</select>
<input type="text" name="constraint[]" id="constraint_0" class="relation-input" data-provide="typeahead" data-items="2" style="" />
</div>
<div class="relation-reight">
<button type="reset" class="btn">X</button>
</div>
</div>
</div>
</fieldset>
<button type="button" class="btn btn-primary" onclick="add_relation();">Add More</button>
</div>
Now I want this section to be generated dynamically
<div class="relation-parent_0">
<div class="relation-left" id="relation_0">
<select name="key[]" id="key_0" class="relation-select">
<option value="">Select Brand</option>
<option value="">Select Brand</option>
</select>
<select name="condition[]" id="condition_0" class="relation-select">
<option value="">Select Brand</option>
<option value="">Select Brand</option>
</select>
<input type="text" name="constraint[]" id="constraint_0" class="relation-input" data-provide="typeahead" data-items="2" style="" />
</div>
<div class="relation-reight">
<button type="reset" class="btn">X</button>
</div>
</div>
EDIT:
I modified the answer by bart s
and rewrite the script like this,
but it seems to have some error
var i = 0;
function add_relation()
{
i = i + 1;
var memtag = $('<div />', {
'class' : 'relation-parent_' + i,
html : $('<div />', {
'class' : 'relation-left',
'id' : 'relation_' + i,
html : $('<select />',
{
'class' : 'relation-select',
'id' : 'key_' + i,
'name' : 'key[]'
})
}
),
$('<div />', {
'class' : 'relation-right',
html : $('<button />',
{
'class' : 'btn',
'name' : 'btn[]'
})
}
)
});
$("#relation_container").append(memtag);
}
Finaly I Got The Answer
var i = 0;
function add_relation()
{
i = i + 1;
var left = $('<div />', {'class' : 'relation-left','id' : 'relation_' + i}).append($('<select />', {
'class' : 'relation-select',
'id' : 'key_' + i,
'name' : 'key[]'
})).append($('<select />', {
'class' : 'relation-select',
'id' : 'condition_' + i,
'name' : 'key[]'
})).append($('<input />', {
'class' : 'relation-input',
'id' : 'constraint_' + i,
'type' : 'text',
'name' : 'constraint[]',
'data-provide' : 'typeahead',
'data-items' : '2'
}));
var right = $('<div />', {'class' : 'relation-right',html : $('<buton />',
{
'class' : 'btn',
'name' : 'btn[]',
'value': 'X'})
});
var parent = $('<div />', {'class' : 'relation-parent_' + i}).append(left).append(right);
$("#relation_container").append(parent);
}
Here's the final script:
<style>
.relation-left
{
float:left;
width: 80%;
}
.relation-right
{
float:left;
margin: 0 0 0 30px;
}
.relation-select
{
width: 120px !important;
float:left;
margin: 0 0 0 2px
}
.relation-input
{
width: 120px !important;
margin: 0 0 0 12px
float:left;
}
</style>
<script type="text/javascript">
function condition_toggle(condition)
{
if(condition==1)
$("#condition_div").fadeOut('slow');
else
$("#condition_div").fadeIn('slow');
}
var i = 0;
function add_relation()
{
i = i + 1;
var left = $('<div />', {'class' : 'relation-left','id' : 'relation_' + i}).append($('<select />', {
'class' : 'relation-select',
'id' : 'key_' + i,
'name' : 'key[]'
})).append($('<select />', {
'class' : 'relation-select',
'id' : 'condition_' + i,
'name' : 'key[]'
})).append($('<input />', {
'class' : 'relation-input',
'id' : 'constraint_' + i,
'type' : 'text',
'name' : 'constraint[]',
'data-provide' : 'typeahead',
'data-items' : '2'
}));
var right = $('<div />', {'class' : 'relation-right',html : $('<buton />',
{
'class' : 'btn',
'name' : 'btn[]',
'value': 'X'})
});
var parent = $('<div />', {'class' : 'relation-parent_' + i}).append(left).append(right);
$("#relation_container").append(parent);
}
</script>
<div class="row-fluid sortable">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-edit"></i> Add collection</h2>
<div class="box-icon">
<a href="#" class="btn btn-setting btn-round"><i class="icon-cog"></i></a>
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box-content">
<form class="form-horizontal" action="<?php echo base_url() ?>admin.php/collection/add_collection" method="post" enctype="multipart/form-data">
<fieldset>
<legend><?php if(isset($msg)) echo $msg;?></legend>
<div class="control-group">
<label class="control-label" for="typeahead">collection Name</label>
<div class="controls">
<input type="text" name="title" class="span6 typeahead" id="title" data-provide="typeahead" data-items="4" >
</div>
</div>
<div class="control-group">
<label class="control-label" for="fileInput">File input</label>
<div class="controls">
<input class="input-file uniform_on" name="img" id="img" type="file">
</div>
</div>
<!--<div class="control-group" >
<label class="control-label" for="textarea2">Description</label>
<div class="controls" style="overflow-x: auto;">
<textarea class="cleditor" name="cont" id="cont" rows="3"></textarea>
</div>
</div>-->
<div class="control-group">
<label class="control-label">Conditions</label>
<div class="controls">
<label class="radio">
<input type="radio" name="gender" id="optionsRadios1" value="1"
onclick="condition_toggle(this.value);">
Manual(Product Added Manualy)
</label>
<div style="clear:both"></div>
<label class="radio">
<input type="radio" name="gender" id="optionsRadios2" value="2"
onclick="condition_toggle(this.value);">
Automatic(products addition automated)
</label>
</div>
<div class="controls" id="condition_div" style="display:none; border: 1px solid #cfcfcf; margin-top: 5px;">
<div class="box-content">
<fieldset>
<legend><h6>Select Conditions</h6></legend>
<div class="control-group" id="relation_container">
<div id="relation-parent_0">
<div class="relation-left">
<select name="key[]" id="key_0" class="relation-select">
<option value="">Select Brand</option>
<option value="">Select Brand</option>
</select>
<select name="condition[]" id="condition_0" class="relation-select">
<option value="">Select Brand</option>
<option value="">Select Brand</option>
</select>
<input type="text" name="constraint[]" id="constraint_0" class="relation-input"
data-provide="typeahead" data-items="2" style="" />
</div>
<div class="relation-right">
<button type="reset" class="btn">X</button>
</div>
</div>
</div>
</fieldset>
<button type="button" class="btn btn-primary" onclick="add_relation();">Add More</button>
</div>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">Save changes</button>
<button type="reset" class="btn">Cancel</button>
</div>
</fieldset>
</form>
</div>
</div><!--/span-->
<div>
<a href="<?php echo base_url();?>admin.php/collection">
<button class="btn btn-large btn-success">View collection Listings</button>
</a>
</div>
</div><!--/row-->
<!-- content ends -->
</div><!--/#content.span10-->
</div><!--/fluid-row-->
<hr>