Работа с чекбоксами
Возможно кто-то встречал плагин jquery для работы с чекбоксами?
Например выделить все чекбоксы, снять выделение, инвертировать выделение. Если выделены все чекбоксы в группе, или чекбоксы с заданными параметрами то выделять главный чекбокс(который выделяет все). Также чтобы подсвечивалась строка таблицы (тег <tr>) если в ней выделили чекбокс, ну и чтобы при нажатии на эту строку выделялся чекбокс. Неохота писать велосипед, если такое уже есть |
А для этого обязательно использовать jQuery?
|
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[]' }); }); |
Часовой пояс GMT +3, время: 11:10. |