Как узнать целевой элемент, вызвавший событие в ответном ответе ajax? - PullRequest
1 голос
/ 09 марта 2010

Я отправляю сообщение на сервер, используя jquery ajax, используя $ .post. После того, как сервер возвращает ответ, я обрабатываю ответ в функции обратного вызова. В этой функции обратного вызова я могу узнать, по какому элементу щелкнули. Пожалуйста, проверьте следующее. В функции handleServerResponse я хотел бы знать элемент DOM, который вызвал это событие. Точно я хочу получить доступ к элементу $ (this), доступному в функции handleFavouritesUI. Я использую jquery с ASP.NET MVC.

    <script type="text/javascript">
    $(function() {

        $("a.favourite-on, a.favourite-off").click(handleFavouritesUI);
    });

    function handleFavouritesUI(e) {
        var link = $(this).attr("href");

        $.post(link, handleServerResponse);


        e.preventDefault();
        return false;
    }

    function handleServerResponse(data, textStatus) {
        response = eval(data);

        var targetElement = null;
        // TODO: get the target element.  

        if (!response.success) {
            showMessage(targetElement, response.reason, true);
        }
        else {
            //TODO: Modify the target element.  
        }
    }  


</script>

1 Ответ

1 голос
/ 09 марта 2010

Измените handleServerResponse на встроенную функцию ...

function handleFavouritesUI(e) {
    var link = $(this).attr("href");

    $.post(link, function(data,textStatus){
        var targetElement = null;
        if (!response.success) {
            showMessage(targetElement, response.reason, true);
        }
        else {
            // See, the link object still holds the same reference.
            link.fadeOut().fadeIn();
        }
    });

    e.preventDefault();
    return false;
}

Прочтите немного о замыканиях в JavaScript , чтобы лучше понять, как это работает.

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