ФорумПрограммированиеJavaScript → jquery строки чекбоксы

jquery строки чекбоксы

  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz Март 1, 2010, 9:58 п.п.

    jQuery.fn.z = function(options){
    var options = jQuery.extend({
    bgEven: '#FFFFFF',
    bgOdd: '#F5F9FF',
    bgHover: '#CCFFCC'
    },options);
    return this.each(function() {
    jQuery(this).find('.h:even')
    .css('background-color', options.bgEven)
    .hover(
    function () {
    jQuery(this).css('background-color', options.bgHover)
    },
    function () {
    jQuery(this).css('background-color', options.bgEven)
    }
    )
    .click(
    function(){
    var chk=jQuery(this).children('td').children('.chk');
    if(chk.attr('checked')==true){chk.attr('checked',false);}else{chk.attr('checked',true);}

    }
    );
    jQuery(this).find('.h:odd')
    .css('background-color', options.bgOdd)
    .hover(
    function () {
    jQuery(this).css('background-color', options.bgHover)
    },
    function () {
    jQuery(this).css('background-color', options.bgOdd)
    }
    )
    .click(
    function(){
    var chk=jQuery(this).children('td').children('.chk');
    if(chk.attr('checked')==true){chk.attr('checked',false);}else{chk.attr('checked',true);}

    }
    );
    });
    };

    собственно подсвечиваем строки в таблице этим плагином
    и параллельно отмечаем нужные чекбоксы
    имеется трабл - если кликнуть на чекбоксе строки - он не срабатывает.
    и еще - в строке имеются ссылки и другие чекбоксы - как исключить срабатывание основного чекбокса?
  • andrrr

    Сообщения: 12 Репутация: N Группа: Кто попало

    Spritz Март 2, 2010, 2:02 д.п., спустя 4 часа 4 минуты 6 секунд


    $(function(){
    $("table").each(function() {
    new tableObject($(this));
    });
    });

    function tableObject(table) {

    var self = this;

    this.options = {
    bgEven: '#fff',
    bgOdd: '#F5F9FF',
    bgHover: '#cfc'
    };

    table.find('.h').each(function(){

    var thisBg = $(this).index() % 2 ? self.options.bgEven : self.options.bgOdd;

    $(this).css('background', thisBg)
    .hover(
    function() {
    $(this).css('background', self.options.bgHover)
    },
    function() {
    $(this).css('background', thisBg)
    }
    ).click(
    function(e){
    self.toggleSelection($(this), e);
    }
    );
    });

    }

    tableObject.prototype.toggleSelection = function(row, e) {

    if (!/^(td)$/i.test(e.target.nodeName)) return true;

    var chk = row.find('.chk');
    chk.attr('checked', chk.is(':checked') ? false : true);

    }


    гг отэто мне нефиг было делать в час ночи. отрефакторил.
    Попинайте, что ли.
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz Март 2, 2010, 9:30 п.п., спустя 19 часов 27 минут 30 секунд

    проверять не буду, обошелся уже методом через жопу, но спасибо.
    учиццо мне еще и учиццо
    вот это
    click(
    function(e){
    self.toggleSelection($(this), e);
    }


    что делает?
  • andrrr

    Сообщения: 12 Репутация: N Группа: Кто попало

    Spritz Март 2, 2010, 10:21 п.п., спустя 51 минуту 31 секунду

    Собсно, можно без жопы - использовать твой плагин, вставив в обработку клика эту проверку:
    if (!/^(td)$/i.test(e.target.nodeName)) return true; 

    Это решает проблему некорректной обработки кликов.
    Спустя 248 сек.

    вот это
    click(
    function(e){
    self.toggleSelection($(this), e);
    }


    что делает?


    Переключает чекбокс checked/unchecked.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!