2013-08-26 4 views
0

Я пытаюсь реализовать столбец изменения размера с помощью JQuery, как показано ниже (смотрите http://jsbin.com/uduNUbo/1/edit)Реализация изменения размера столбца с использованием JQuery

Вот мой JS код

 function resizeEvents(selector) { 
     function XY(e, ele) { 
      var parentOffset = ele.parent().offset(); 
      return e.pageX - parentOffset.left; 
     } 
     var checkPos; 
     $(selector).on('mousedown', function() { 
      $(this).attr('init', true); 
      return false; 
     }); 
     $(selector).on('mouseup', function() { 
      $(this).attr('init', false); 
     }); 
     $(selector).closest('div').on('mousemove', function (e) { 
      var inits = $(this).find('.resize').filter(function(){ 
       return $(this).attr('init') == true; 
      }); 
      if (inits.length > 0) { 
       var pos = XY(e, inits.first()); 
       if (!checkPos) { 
        checkPos = pos; 
        return false; 
       } else { 
        var moved = checkPos - pos, a = moved > 0 ? 1 : -1 ; 
        th.prevAll().each(function() { 
         if (!$(this).hasClass('.resize')) { 
          $(this).width($(this).width() + a); 
         } 
        }); 
        th.nextAll().each(function() { 
         if (!$(this).hasClass('.resize')) { 
          $(this).width($(this).width() - a); 
         } 
        }); 
       } 
      } 
     }); 
    } 

    resizeEvents('.resize'); 

Но это не работает, на мой вопрос Is mousemove is written properly, to define properly on correct element or not ,

+0

Если это не работает, то это не написано правильно, не так ли? – jcubic

ответ

1

Я установил код для вас:

function resizeEvents(selector) { 
    var selected; 
    $(selector).on('mousedown', function() { 
    selected = $(this); 
    return false; 
    }); 
    $(document).mouseup(function() { 
    selected = null; 
    }).mousemove(function(e) { 
    var target = $(e.target); 
    var table = target.parents('.table'); 
    if (table.length && selected) { 
     var x = e.pageX - table.offset().left; 
     var splitter_x = selected.offset().left; 
     var prev = selected.prev(); 
     var next = selected.next(); 

     prev.width(prev.width() + (x - splitter_x)); 
     next.width(next.width() - (x - splitter_x)); 
    } 
    }); 
} 

http://jsbin.com/uduNUbo/5/edit

+0

Спасибо тонну :) Могу я узнать, в чем проблема с моим кодом – Exception

+0

Ваш код не имеет для меня никакого смысла, и нет ни одного места, где я могу указать, что это было неправильно. – jcubic