forked from KingYes/jquery-radio-image-select
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.radioImageSelect.js
64 lines (55 loc) · 1.84 KB
/
jquery.radioImageSelect.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
* Author: Yakir Sitbon.
* Project Url: https://github.com/KingYes/jquery-radio-image-select
* Author Website: http://www.yakirs.net/
* Version: 1.0
**/
(function($)
{
$.fn.radioImageSelect = function(options)
{
var defaults = {
imgItemClass: 'radioSelectImgItem',
imgItemCheckedClass: 'radioSelectImgItemChecked',
hideLabel: true
};
options = $.extend(defaults, options);
var methods = {
syncClassChecked : function(img)
{
var radioName = img.prev('input[type="radio"]').attr('name');
$('input[name="' + radioName + '"]').each(function()
{
var myImg = $(this).next('img');
myImg.removeClass(options.imgItemCheckedClass);
if ($(this).prop('checked'))
{
myImg.addClass(options.imgItemCheckedClass);
}
});
}
};
return this.each(function()
{
$(this)
.hide()
.after('<img src="' + $(this).data('image') + '" alt="radio image" />')
;
var img = $(this).next('img');
img.addClass(options.imgItemClass);
if (options.hideLabel)
{
$('label[for=' + $(this).attr('id') + ']').hide();
}
if ($(this).prop('checked'))
{
img.addClass(options.imgItemCheckedClass);
}
img.on('click', function(e)
{
$(this).prev('input[type="radio"]').attr('checked', 'checked');
methods.syncClassChecked($(this));
});
});
}
})(jQuery);