Показать сообщение отдельно
  #3 (permalink)  
Старый 14.04.2012, 14:59
man man вне форума
Интересующийся
Отправить личное сообщение для man Посмотреть профиль Найти все сообщения от man
 
Регистрация: 22.08.2009
Сообщений: 14

jQuery используется в проекте




вот накидал говнокод, пример работы http://pastehtml.com/view/buq9co1p5.html
(function($) {
	$.fn.checkbox = function(options){
		var defaults = {
			parent: '',
			main: '',
			sub: '',
			c: 0
		};
		
		var opts = $.extend(defaults, options);
		var total = $(opts.parent).find("input[type=\"checkbox\"][name=\""+opts.sub+"\"]").length;
		
		
		$(options.parent + ' tr')
			.filter(':has(:checkbox:checked)')
			.addClass('selected')
			.end()
			.click(function(event) {
				
				$(this).toggleClass('selected');
				if (event.target.type !== 'checkbox') {
					var check = $(':checkbox', this);					
					check.attr('checked', function() {
						return !this.checked;
					});	
					
					if(check.is(':checked')) opts.c++;
						else opts.c--;
						
					if(opts.c == total) $(opts.main).attr('checked', true);
						else $(opts.main).attr('checked', false);					
					
				}	
				
			});
			
		$(options.main).click(function(){
		
			$(opts.parent).find("input[type=\"checkbox\"][name=\""+opts.sub+"\"]").each(function(){				
				
				// инвертирует выделение				
				//$(this).attr('checked',!$(this).attr('checked'));
				//$(this).parents().toggleClass('selected');
				//$(this).parent().toggleClass('selected');				
				
				// выделяет все, или снимает выделение со всех				
				if($(opts.main).attr('checked')) {
					$(this)
						.attr('checked', 'checked')
						.closest('tr')
						.addClass('selected');
					opts.c++;
				} else {
					$(this)
						.attr('checked', false)
						.closest('tr')
						.removeClass('selected');
					opts.c--;
				}
							
			});
			
		});	
		
		$(opts.parent + " input[name='"+opts.sub+"']").bind('click', function(){
				
			if($(this).is(':checked')) opts.c++;
				else opts.c--;					
				
			if(opts.c == total) $(opts.main).attr('checked', true);
				else $(opts.main).attr('checked', false);		
		
		});		
		
	};
})(jQuery); 


$(document).ready(function() {

	$('.table').checkbox({
		parent: '.table',
		main: '#checkall',
		sub: 'check[]'
	});
	
});

Последний раз редактировалось man, 14.04.2012 в 15:30.
Ответить с цитированием