2012-02-17 2 views
0

Ну, после нескольких часов попыток найти что-то, я должен спросить здесь и, возможно, снова (я нашел похожие вопросы, но ни один из них не помог мне).Контекстное меню jQuery в загруженном содержимом AJAX

Я пытаюсь использовать настраиваемое контекстное меню на странице, динамически загружаемой через AJAX - все с помощью jQuery. Проблема в том, что контекстное меню просто не работает на динамически загруженной странице ... при щелчке правой кнопкой мыши ничего не отображается.

Я уже выяснил, что использование .live() является решением, но все еще не может заставить его работать. Вот моя последняя попытка с этим ContextMenu plugin (используя только пример кода):

<script type="text/javascript"> 
    $(document).live("load", function() { 
     $('#testtt').contextMenu('testtt', { 
      bindings: { 
       'open': function(t) { 
        alert('Trigger was '+t.id+'\nAction was Open'); 
       }, 
       'email': function(t) { 
        alert('Trigger was '+t.id+'\nAction was Email'); 
       }, 
       'save': function(t) { 
        alert('Trigger was '+t.id+'\nAction was Save'); 
       }, 
       'delete': function(t) { 
        alert('Trigger was '+t.id+'\nAction was Delete'); 
       } 
      } 
     }) 
    }); 

</script> 
<div id="testtt">test</div> 

Это важный путь, который находится на странице, загруженной динамически.

Я также использую jQuery UI Sortable, но это не должно быть проблемой.

Спасибо за каждое полезное решение.

+0

Что вы пытаетесь достичь? 'live' - это элементы, которые могут быть созданы после вызова' live', что здесь не очень полезно, потому что 'document' существует только один раз. На самом деле, без селектора 'live' на самом деле ничего не делает. – pimvdb

+0

Ну, учились с jQuery всего за несколько последних дней, поэтому я все еще ноб в jQuery. Как я уже писал, это только моя последняя попытка, я пытаюсь выполнить контекстное меню, работающее на загруженной странице AJAX. До сих пор нет успеха. – James

ответ

1

Переместите свой $ ('# testtt'). ContextMenu ... вызовите метод Ajax success(), как показано ниже. Это обеспечит подключение вашего контекстного меню ПОСЛЕ того, как ваши данные будут загружены и отображены на экране. Это должно быть последним в вашем успехе Ajax(). В качестве альтернативы он может быть включен в Ajax complete().

$.ajax({ 
    type: 'GET', 
    url: 'PATH TO URL', 
    success: function(){ 
     $('#testtt').contextMenu('testtt', { 
      bindings: { 
       'open': function(t) { 
        alert('Trigger was '+t.id+'\nAction was Open'); 
       }, 
       'email': function(t) { 
        alert('Trigger was '+t.id+'\nAction was Email'); 
       }, 
       'save': function(t) { 
        alert('Trigger was '+t.id+'\nAction was Save'); 
       }, 
       'delete': function(t) { 
        alert('Trigger was '+t.id+'\nAction was Delete'); 
       } 
      } 
     }); 
    } 
}); 
+0

Нет, не помогло. Поведение все равно одно и то же :( – James

+0

Ну, наконец, продолжалось ... решено с помощью одного из плагинов контекстного меню, которое я пробовал раньше, и главной проблемой была не загрузка #testtt ... но div с меню. Тем не менее, это было полезно также, не понял бы это без вашего ответа. Спасибо. – James

Смежные вопросы