-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathselected.js
40 lines (37 loc) · 1.23 KB
/
selected.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
(function() {
var $;
$ = jQuery;
$.fn.selected = function(options) {
var parent, selectAll;
if (options == null) {
options = {};
}
parent = options.parent != null ? options.parent : null;
selectAll = options.selectAll != null ? options.selectAll : true;
return this.click(function(event) {
var className, clickTarget;
if ($(event.target).is(this)) {
clickTarget = event.target;
} else {
clickTarget = $(event.target).closest(this)[0];
}
if (clickTarget === event.currentTarget) {
clickTarget = $(clickTarget);
className = clickTarget.attr("class").split(" ")[0];
if (parent != null) {
$("" + parent + " [class*=" + className + "]").not(clickTarget).removeClass("selected odd even");
} else if (selectAll) {
$("*[class*=" + className + "]").not(clickTarget).removeClass("selected odd even");
}
clickTarget.addClass("selected");
if (clickTarget.hasClass("odd")) {
clickTarget.addClass("even");
return clickTarget.removeClass("odd");
} else {
clickTarget.addClass("odd");
return clickTarget.removeClass("even");
}
}
});
};
}).call(this);