2014-12-15 2 views
0

Я хочу выбрать ячейки в таблице времени, щелкнув и перетащив, в то время как ограничение выбора происходит только в строке (например, строка А), где начинается выбор - ничего не делать, если курсор перемещается из строки A, и как только он вернется в строку A, выберите ячейки между первой ячейкой и текущей ячейкой (включительно).Выбор ячеек в строке

В настоящее время общий отбор работ (я создал jsfiddle here), но я не могу ограничить выбор в строке, где начинается выбор, я понял, причина в том, что я не могу получить индекс строки и столбца в обработчиках событий, но не может понять, почему:

var isMouseDown = false; 
    var row = -1; // row to start a selection 

    $("#our_table td") 
     .mousedown(function() { 
     isMouseDown = true; 

     row = $(this).parent().index(); // doesn't work!!! 

     return false; // prevent text selection 
    }) 

Я нашел пример из here где индекс строки/столбца может быть извлечен в случае зависания, но когда я кладу сценарий в шахту, даже выбор не работает :(

Я новичок в этом материале JavaScript, любая помощь будет оценена.

+0

см. Скрипку http://jsfiddle.net/ocu36uwk/10/ –

+0

Есть ли причина, по которой вы используете jQuery 1.3.2? Это довольно старая версия jQuery. – dreyescat

+0

@AnoopJoshi, ваша скрипка точно такая же, как у меня. Вы забыли нажать «Обновить», чтобы сохранить его? Спасибо, в любом случае. –

ответ

0

Если я понял вопрос:

http://jsfiddle.net/ocu36uwk/11/

использование var $tr; для хранения текущей строки

в .mousedown функции, установленной текущей строки $tr = $(this).parent();

в .mouseove проверки функции делает строки равны:

if (isMouseDown && ($tr[0] === $(this).parent()[0])) 
+1

dm4web и Jerodev, большое спасибо вашим парням, я, наконец, сделал это на основе ваших ответов: http://jsfiddle.net/frank2048/ocu36uwk/13/ –

+0

В настоящее время я использую '$ tr [0] .cells [i]. className = "highlight"; 'для выбора нескольких ячеек в цикле, вероятно, это не очень хорошая реализация. Любой лучший способ использовать addClass() для этого? –

+1

$ ($ tr [0] .cells [i]). AddClass («выделено»); – dm4web

0

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

Эти функции должны возвращать индекс строки и столбца выбранного элемента. Сначала вы находите коллекцию элементов, а в функции индекса вы указываете элемент из коллекции, из которой вы хотите получить индекс.

var col = $(this).parent().find("td").index($(this)); 
var row = $(this).parent().parent().find("tr").index($(this).parent()); 
Смежные вопросы