JQuery AJAX частичное обновление страницы - PullRequest
0 голосов
/ 18 октября 2010

Вот моя простая функция jQuery для частичного обновления страницы

 <script type="text/javascript">
$(document).ready(function () {
    $("#prevlinkh").click(function () {
        var pagenumber = $("#prevlinkh").attr("pn");
        $("#filelist").load('/uploads/<%=FileCategoryName %>/' + pagenumber + " #filelist>*", "");
        return false;
    });

    $("#nextlinkh").click(function () {
        var pagenumber = $("#nextlinkh").attr("pn");
        $("#filelist").load('/uploads/<%=FileCategoryName %>/' + pagenumber + " #filelist>*", "");
        return false;
    });
}); 
</script>

он вызывается с

<a id="prevlinkh" pn="10" href="/uploads/All/10">Previous</a>
<a id="nextlinkh" pn="12" href="/uploads/All/12">Next</a>

ссылки выше находятся в div (filelist), который обновлен частично.

Проблема в том, что ajax-запрос работает при первом запросе, но не при втором. второй запрос вызывается как обычный щелчок по ссылке. Как я понимаю, недавно загруженные следующие и предыдущие ссылки кое-как не попадают в DOM.

Как я могу это изменить, поэтому щелкнув по ссылкам next / prev во второй раз, вы также вызовете ajax-запрос. Я надеюсь, что мой вопрос достаточно ясен

Ответы [ 2 ]

2 голосов
/ 18 октября 2010

Один из самых простых способов - использовать функцию jQuery live():

 <script type="text/javascript">
$(document).ready(function () {
    $("#prevlinkh").live('click',function () {
        var pagenumber = $("#prevlinkh").attr("pn");
        $("#filelist").load('/uploads/<%=FileCategoryName %>/' + pagenumber + " #filelist>*", "");
        return false;
    });

    $("#nextlinkh").live('click',function () {
        var pagenumber = $("#nextlinkh").attr("pn");
        $("#filelist").load('/uploads/<%=FileCategoryName %>/' + pagenumber + " #filelist>*", "");
        return false;
    });
}); 
</script>

Также есть возможность использовать delegate(), что может более соответствовать вашим потребностям, но я не совсем уверен.

1 голос
/ 18 октября 2010

Проблема в том, что вы связываете событие click при загрузке документа. Затем, когда элементы заменяются, они перезагружаются, и с ними ничего не связано. Вы можете перепривязать их или использовать метод live () jQuery.

http://api.jquery.com/live/

...