Как использовать плагины для динамически создаваемых элементов в jQuery? - PullRequest
1 голос
/ 04 августа 2011

Я не знаю, что делать. Я хочу сделать это:

$('.message').contextMenu('myMenu1', {
    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');
        }
    }
});

для динамически создаваемых элементов.

Элементы с классом message были добавлены с помощью AJAX:

    $.post('index.php', {link: link, ajax: true},
        function(response) {
            $("#test").(response);
        }
    );

ответ - HTML-код, сгенерированный сервером.

Когда страница загружает первый, HTML-код выглядит так:

<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
    <meta charset="UTF-8">
    <title>RTIT chat</title>
    <link rel="stylesheet" type="text/css" href="view/styles/style.css" media="all" />
    <script type="text/javascript" src="view/scripts/jquery/jquery-1.6.2.min.js"> </script>
    <script type="text/javascript" src="view/scripts/jquery/jquery.test.js"> </script>
    <script type="text/javascript" src="view/scripts/jquery/jquery.contextmenu.r2.packed.js"> </script>
    <script type="text/javascript" src="view/scripts/controller.class.js"> </script>
</head>
<body>
    <div id="ajaxLoadPlace">
    </div>
</body>
</html>

Без элементов с классом message. Элементы message будут сгенерированы с помощью controller.class.js.

Я пробовал этот плагин на не динамически создаваемых элементах, и он отлично работает!

Как это сделать?

Это сработало, но только один раз ... после первого обновления DOM.

1 Ответ

2 голосов
/ 04 августа 2011

Пожалуйста, напишите больше кода и объясните свой вопрос лучше.Почему вы не можете просто вызывать эту функцию в то время, когда элемент динамически создается?Если это проблема, вы можете попробовать это

$('.message').ready(function(){
    $(this).contextMenu('myMenu1', {
       bindings: {
        ...
        }
      }
    });
});

Обновление:

$.post('index.php', {link: link, ajax: true},
    function(response) {
        $("#test").(response);
        $(".message").contextMenu('myMenu1', {
           ...
     });
});
...