Контекстное меню jQuery в загруженном контенте AJAX - PullRequest
0 голосов
/ 18 февраля 2012

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

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

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

<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, но это не должно вызывать проблем.

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

1 Ответ

1 голос
/ 18 февраля 2012

Переместите ваш $ ('# 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');
                }
            }
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...