افزونه جی کوئری RowAdder
نویسنده: علی یگانه مقدم
تاریخ: ۱۳۹۴/۰۸/۱۳ ۲۳:۴۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
<link type="text/css" href="css/RowAdder.css" rel="stylesheet" />
<script src="js/RowAdder.js" type="text/javascript"></script> <div id="row-sample">
<form style="margin: 0; padding: 0;">
Name:<input type="text"/>
<input type="radio" name="Gender" value="male" checked="checked">Male
<input type="radio" name="Gender" value="female">Female
</form>
</div> <div id="mypanel"></div>
<script>
$(document).ready(function() {
$("#mypanel").RowAdder();
});
</script> <button id="addanotherform">Add New Form</button>
$("#addanotherform").on('click', function() {
$("#mypanel").RowAdder('add');
});
$("#mypanel").RowAdder('hide'); $("#mypanel").RowAdder('show'); $("#mypanel").RowAdder('add'); $("#mypanel").RowAdder('count') $("#mypanel").RowAdder('content', 3) $("#mypanel").RowAdder('remove', 3); $("#mypanel").RowAdder({
sample: '#my-custom-sample',
type: 'text',
value:'حذف'
}); $("#mypanel").RowAdder({
type: 'image',
value: 'images/remove.png'
}); در بردارنده هر سطر
.each-section {
margin: 20px;
padding: 5px;
}
جهت استایل بندی لینک چه تصویر و چه متن
.remove-link {
color:#999;
text-decoration: none;
}
a:hover.remove-link {
color:#802727;
}
جهت تغییر استایل بر روی خود تصویر
.remove-image {
} (function ($) {
var settings = null;
$.fn.RowAdder = function (method) {
// call methods
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.RowAdder');
}
};
})(jQuery); //methods
var methods = {
init: function (options) {
//default-settings
settings = $.extend({
'sample': '#row-sample',
'type': 'text',
'value': 'Remove'
}, options);
this.attr('data-sample', settings.sample);
this.attr('data-type', settings.type);
this.attr('data-value', settings.value);
Do(this);
},
show: function () {
this.css("display", "inline");
},
hide: function () {
this.css("display", "none");
},
add: function () {
Do(this);
},
remove: function (index) {
console.log(index);
this.find(".each-section")[index].remove();
},
content: function (index) {
return this.find(".each-section")[index];
},
count: function (index) {
return this.find(".each-section").size();
}
}; function Do(panelDiv) {
settings.sample = panelDiv.data('sample');
settings.type = panelDiv.data('type');
settings.value = panelDiv.data('value');
//find sample code
var rowsample = $(settings.sample);
rowsample.css("display", "none");
var sample = rowsample.html();
var i = panelDiv.find(".each-section").size();
//add html details to create a correct template
var sectionDiv = $('<div />', { "class": 'each-section', 'id': 'section'+i });
var image = $("<img />", { "src": settings.value,"class":"remove-image" });
var link = $("<a />", { "text": settings.value,"class":"remove-link" });
//remove event for remove selected form
//create new form
sectionDiv.html(sample);
link.on('click', function (e) {
e.preventDefault();
var $this = $(this);
$this.closest(".each-section").remove();
});
if (i > 0) {
if (settings.type == 'image') {
link.text('');
link.append(image);
}
sectionDiv.append(link);
}
//add new created form on document
panelDiv.append(sectionDiv);
} settings.sample = panelDiv.data('sample');
settings.type = panelDiv.data('type');
settings.value = panelDiv.data('value');
//find sample code
var rowsample = $(settings.sample);
rowsample.css("display", "none");
var sample = rowsample.html();
var i = panelDiv.find(".each-section").size(); //add html details to create a correct template
var sectionDiv = $('<div />', { "class": 'each-section', 'id': 'section'+i });
var image = $("<img />", { "src": settings.value,"class":"remove-image" });
var link = $("<a />", { "text": settings.value,"class":"remove-link" }); //create new form
sectionDiv.html(sample); link.on('click', function (e) {
e.preventDefault();
var $this = $(this);
$this.closest(".each-section").remove();
}); if (i > 0) {
if (settings.type == 'image') {
link.text('');
link.append(image);
}
sectionDiv.append(link);
} //add new created form on document
panelDiv.append(sectionDiv);