Главная > HTML, JavaScript, Программирование > Быстрое выделение checkbox'ов по onMouseOver

Быстрое выделение checkbox'ов по onMouseOver

3 Июль 2007

После того как Snook опубликовал концепцию скрипта где пользователь может кликнуть на checkbox и удерживая кнопку мыши, двигать курсор по другим checkbox'ам и выделять их. Я захотел себе такой плагин под jQuery, но что-то никто его писать не захотел, и мне пришлось написать его самому. Вот что из этого получилось:

Единственное что я добавил, так это – опцию для обратного выделения. Кода получилось немного меньше, чем тот же вариант под mootools от digitarald, но у меня нет фишки с shift'ом, а на счет скорости я не проверял


jQuery.fn.extend({
	toggler : function(params){
		var toggler = {
			version : 1.1,
			undo : false,
			started : false,
			first : false,
			elements : null,

			init : function (elements, undo){
				this.elements = elements;
				this.undo = !!undo;
				this.elements.bind("mousedown", this, this.down)
				this.elements.bind("mouseover", this, this.over)
				this.elements.bind("click", this, this.click)
				jQuery(document.body).bind("mouseup", this, this.up);
			},

			down : function (event){
				event.data.started = true;
				event.data.first = !this.checked;
				event.data.check(this,!this.checked)
			},

			over : function(event){
				if (event.data.started)
					if (event.data.undo)
						event.data.check(this,!this.checked);
					else
						event.data.check(this,event.data.first);
			},

			click : function(event){
				event.data.check(this,event.data.first);
				event.data.started = false;
			},

			check : function(elt,cond){
				var e = jQuery(elt);
				if(cond)
					e.attr({checked:"checked"});
				else
					e.removeAttr("checked");
			},

			up : function (event){
				event.data.started = false;
			}
		}
		toggler.init(this,params);
		return this;
	}
});

Запускается это все так


jQuery(document).ready(function($){
    $(':checkbox').toggler(true);
});
Комментирование отключено.