Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.12.2009, 17:19
Аспирант
Отправить личное сообщение для xela1980 Посмотреть профиль Найти все сообщения от xela1980
 
Регистрация: 20.11.2009
Сообщений: 33

Контекстное меню как считать данные из таблицы
Ребята помогите понять след. проблему, Есть таблица с данными Есть фунцкцИИ которые считывает эти данные при двойном клике по определенной ячейке, Затем я хочу либо заполнить эту ячейку(ту по которой кликал), либо редактировать данные в ней либо полностьсю удалить. Все три функции по отдельности работают правилььно.
То есть было так для обновления данных

$("td").live("dblclick",OPEN_DIALOG_UPDATE_PAIR) ;
и затем:


var a = new Array ();

function OPEN_DIALOG_UPDATE_PAIR()
{ a[0]=$(this).find("#idpair").text();
a[1]=$(this).find("#date").text();
и тд. затем функционал обноления
Все работало все читалось.

Проблема - решил поместить эти функции в контекстное меню(правая клавиша) соотвественно с пунктами Добавить Редактировать Удалить, Плагин поддисан на правый клик по ячейке Теперь когда клацаю по нужной ячейке выпадает меню затем вызывается нужная функция но алерты показывают пустые значения. то есть это a[0]=$(this).find("#idpair").text();
a[1]=$(this).find("#date").text(); Не работает
То есть теперь на клик по ячейке работает выпадение контекстного меню. А как же взять данные из ячейки? Не могу вкурить суть.Я же второй раз клацаю уже по пункту меню.Оно понятно не знает ни про какую ячейку и ничего не читает просто вызывает функцию а там все a[0]=$(this).find("#idpair").text();
a[1]=$(this).find("#date").text(); пустые
как повесить считывание на клацание по пункту меню или может нужно читать и сохранять одновременно. Но для разных функций нужно разное колво данных из ячейки Сейчас у меня так
$("td").contextMenu('myMenu1', {
bindings: {
'add': function(t) {

OPEN_DIALOG_UPDATE_PAIR(t);


},
'edit': function(t) {
alert('Trigger was '+t.id+'\nAction was edit');
},
'delete': function(t) {
alert('Trigger was '+t.id+'\nAction was delete');
}

}
});
Спасибо за вашу помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 16.12.2009, 20:17
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 16.12.2009, 21:29
Аспирант
Отправить личное сообщение для xela1980 Посмотреть профиль Найти все сообщения от xela1980
 
Регистрация: 20.11.2009
Сообщений: 33

Форматирую . Значит так есть HTML
1) меню

<div class="contextMenu" id="myMenu1">
<ul>
<li id="add">Добавить</li>
<li id="edit">Редактировать</li>
<li id="delete">Удалить</li>
</ul>
</div>

2) На него я вещаю такой JS

$("td").contextMenu('myMenu1', {
bindings: {
'add': function(t) {

OPEN_DIALOG_UPDATE_PAIR(t);
},
'edit': function(t) {
alert('Trigger was '+t.id+'\nAction was edit');
},
'delete': function(t) {
alert('Trigger was '+t.id+'\nAction was delete');
}

}
});

Cама по себе функция OPEN_DIALOG_UPDATE_PAIR(); выполняЛА вытягивание информации из ячеек таблицы при двойном клике по ней левой клавишей мышки то есть раньше она вызывалась НЕ путем выбора пунта меню а вот так

$("td").live("dblclick",OPEN_DIALOG_UPDATE_PAIR) ;

и она читала содержимое выбранной (двойным щелчком левой клавиши ) ячейки таким образом

var a = new Array ();

function OPEN_DIALOG_UPDATE_PAIR()
{
a[0]=$(this).find("#idpair").text();
a[1]=$(this).find("#date").text();
и тд. затем много функционала
}
В ячейках таблицы есть скрытые айдишники хранящие инфу

Сейчас я поместил ее (функцию OPEN_DIALOG_UPDATE_PAIR() ) в пункт меню но ...хочу чтобы она продолжала при выборе пункта меню

<li id="add">Добавить</li>

читать инфу из ячейки на которой была нажата правая клавиша. Но инфы нет.Алерты которые я ставлю при вхождении в функцию пустые.
То есть я понимаю что сперва я нажимаю на ячейке правой кнопкой мыши и выпадает меню я выбираю нужный пункт и вызывается нужная функция которая уже не может считать данные из ячейки потому что она не знает из какой? Или я неправильно понимаю?
Ответить с цитированием
  #4 (permalink)  
Старый 16.12.2009, 21:41
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Цитата:
Форматирую . Значит так есть HTML
1) меню
<div class="contextMenu" id="myMenu1">
  <ul>
    <li id="add">Добавить</li>
    <li id="edit">Редактировать</li>
    <li id="delete">Удалить</li>
  </ul>
</div>

2) На него я вещаю такой JS
$("td").contextMenu('myMenu1', {
  bindings: {
    'add': function(t) { OPEN_DIALOG_UPDATE_PAIR(t); },
    'edit': function(t) { alert('Trigger was '+t.id+'\nAction was edit'); },
    'delete': function(t) { alert('Trigger was '+t.id+'\nAction was delete'); }
    }
  });


Cама по себе функция OPEN_DIALOG_UPDATE_PAIR(); выполняЛА вытягивание информации из ячеек таблицы при двойном клике по ней левой клавишей мышки то есть раньше она вызывалась НЕ путем выбора пунта меню а вот так
$("td").live("dblclick",OPEN_DIALOG_UPDATE_PAIR) ;


и она читала содержимое выбранной (двойным щелчком левой клавиши ) ячейки таким образом
var a = new Array ();

function OPEN_DIALOG_UPDATE_PAIR(){
  a[0]=$(this).find("#idpair").text();
  a[1]=$(this).find("#date").text();
  и тд. затем много функционала
  }

В ячейках таблицы есть скрытые айдишники хранящие инфу

Сейчас я поместил ее (функцию OPEN_DIALOG_UPDATE_PAIR() ) в пункт меню но ...хочу чтобы она продолжала при выборе пункта меню
<li id="add">Добавить</li>


читать инфу из ячейки на которой была нажата правая клавиша. Но инфы нет.Алерты которые я ставлю при вхождении в функцию пустые.
То есть я понимаю что сперва я нажимаю на ячейке правой кнопкой мыши и выпадает меню я выбираю нужный пункт и вызывается нужная функция которая уже не может считать данные из ячейки потому что она не знает из какой? Или я неправильно понимаю?
П.С. Так легче читать

Последний раз редактировалось PeaceCoder, 16.12.2009 в 21:43.
Ответить с цитированием
  #5 (permalink)  
Старый 16.12.2009, 21:50
Аспирант
Отправить личное сообщение для xela1980 Посмотреть профиль Найти все сообщения от xela1980
 
Регистрация: 20.11.2009
Сообщений: 33

PeaceCoder Спасибо за помощь в форматировании. Эх еще бы проблему решить. Очень нааадо!
Ответить с цитированием
  #6 (permalink)  
Старый 16.12.2009, 21:57
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

блин что так сложно мануал почитать. я хоть jQuery не юзаю но почемуто понял.
http://www.trendskitchens.co.nz/jquery/contextmenu/

попробуй так
$("td").contextMenu('myMenu1', {
  bindings: {
    'add': function(t) { OPEN_DIALOG_UPDATE_PAIR.call(t); },
    'edit': function(t) { alert('Trigger was '+t.id+'\nAction was edit'); },
    'delete': function(t) { alert('Trigger was '+t.id+'\nAction was delete'); }
    }
  });
Ответить с цитированием
  #7 (permalink)  
Старый 16.12.2009, 22:15
Аспирант
Отправить личное сообщение для xela1980 Посмотреть профиль Найти все сообщения от xela1980
 
Регистрация: 20.11.2009
Сообщений: 33

Cпасибо огромное PeaceCoder заработало. Выручил. Да я тоже в этом деле новичок Если честно раньше читал про этот сall но так и не понял. Это что за метод такой? Если можешь в двух словах. Почему без него никак а с ним как, Объясни я теперь точно пойму. Плииииз.
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2009, 22:32
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

http://javascript.ru/Function/call

В двух словах: ИмяФункции.call($t,a1,a2,a3,...)

Вызовется функция в которой this=$t и передадуться аргументы a1,a2,a3,...

В твоем случае this=TD должно быть вот я подправил передачу TD под твою функцию

Последний раз редактировалось PeaceCoder, 16.12.2009 в 22:37.
Ответить с цитированием
  #9 (permalink)  
Старый 16.12.2009, 22:49
Аспирант
Отправить личное сообщение для xela1980 Посмотреть профиль Найти все сообщения от xela1980
 
Регистрация: 20.11.2009
Сообщений: 33

Еще раз спасибо Теперь понятней. Извини за наглость (курсовая горит )А еще такой вопрос не подскажешь. У меня эта таблица на ячейки которой подписано меню каждый раз после выполнения функции возвращается из аджакс запроса обновленная И понятно меню исчезает Прописывать каждый раз контекстное меню в succes не вариант. Я раньше с live все делал но сейчас сходу не могу понять на click не повесить livom а как еще можно. Извини еще раз что беспокою но очень надо.
Ответить с цитированием
  #10 (permalink)  
Старый 16.12.2009, 23:06
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

в твоем случае плагин маломощный. но можно выкрутится след образом.
Повесить контекстное меню на таблицу.
$("table#id").contextMenu('myMenu1', {
  bindings: {
    'add': function(t) { OPEN_DIALOG_UPDATE_PAIR.call(t._td); },
    'edit': function(t) { alert('Trigger was '+t._td.id+'\nAction was edit'); },
    'delete': function(t) { alert('Trigger was '+t._td.id+'\nAction was delete'); }
    }
  onContextMenu: function(e){
    e.target.parentNode.parentNode._td = e.target;
    return true;
    }
  });

это при условии, что сама таблица не пересоздается и кроссбраузерное решение под e.target
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как в superfish.js меню SAA jQuery 5 20.12.2009 21:54
Подскажите как сделать меню на CSS если: greatilya (X)HTML/CSS 10 18.10.2009 20:26
Как "переключать" картинки в меню навигации? KirTer Элементы интерфейса 1 22.06.2009 11:49
Help ! Как загрузить данные по ссылке из таблицы1 в таблицу2 ? asked86 Общие вопросы Javascript 1 25.03.2009 21:06
Раскрывающееся меню, как переставить на другую сторону? Resager Events/DOM/Window 8 22.08.2008 21:56