динамический слушатель jquery - PullRequest
0 голосов
/ 19 июня 2011

Как я могу создать динамический слушатель, используя jquery для запуска различных задач ajax?

Например, stackoverflow имеет ссылку для удаления для каждого комментария без onlick, поэтому я предполагаю, что они создали прослушиватель класса, но как он узнает, какой идентификатор использовать в URL-адресе ajax?

Ответы [ 3 ]

1 голос
/ 19 июня 2011

Я полагаю, что это делается с помощью свойства id предка tr комментария.

HTML выглядит примерно так:

<tr id="comment-7507745" class="comment">
    <td class="comment-actions">
        <table>
        <tbody>
        <tr>
            <td class="comment-score">
                <span>&nbsp;</span>
            </td>
            <td>
                <a class="comment-up comment-up-off" title="this is a great comment">upvote</a>
            </td>
        </tr>
            <!-- and a whole bunch more -->
    </td>
</tr>

Так что код можетбыть реализован с помощью кода, подобного следующему:

$(document).delegate('a.comment-up', 'click', function(event) {
    var commentId = $(this).closest('tr.comment').attr('id').substr(8);

    // do something with the comment id
});

Таким образом, данные хранятся в виде атрибута, а обход DOM используется для поиска соответствующего элемента, в котором хранятся данные.

1 голос
/ 19 июня 2011

Ваш HTML может содержать что-то вроде:

<span class="delete-link" data-id="15">Delete comment 15</span>

Затем с помощью jQuery вы можете добавить обратные вызовы для этого класса:

$('.delete-link').click(function() {
    var comment_id = $(this).data('id');
    /* send ajax request for that comment ID */
});
0 голосов
/ 19 июня 2011

методом связывания

$('a', '#container').bind('click',function(e){
    /* stuff */
});

(и отменить, для удаления)

Или, если вы асинхронно добавляете новые ссылки, вы можете использовать функцию live

$('a', '#container').live('click',function(e){
    /* stuff */
});

(противоположность жизни, смерть (событие))

Нажав на ссылку, потомок #container вызовет анонимную функцию в аргументах bind / live. Затем вы можете проверить, по какой ссылке щелкнули, проверив ее индекс, или класс, или что-нибудь еще, - и запустить другой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...