не могу получить jquery livequery с панелью обновления

У меня есть базовый html внутри панели обновления asp.net. Используя livequery, я настроил события автозаполнения, размытия и нажатия клавиш, чтобы все они продолжали быть подключенными после того, как панель обновлений выполнит частичную загрузку страницы. Когда страница первоначально загружается, все события работают нормально, но после того, как панель обновлений выполняет частичную перезагрузку страницы, ни одно из событий, связанных с livequery, не продолжает работать. Известны ли проблемы с панелями livequery и update?

HTML:

<asp:UpdatePanel ID="upData" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:DataList ID="dlData" runat="server"
            DataSource='<%# this.Data %>' DataKeyField="ID">
            <ItemTemplate>
                <table>
                    <tr>
                        <th class="required">Location</th>
                        <td><asp:TextBox ID="txtFromLocation" MaxLength="10" CssClass="searchlocation fromlocation required" runat="server" Text='<%# Eval("FromLocation")%>'/><asp:RequiredFieldValidator ID="rvalFromLocation" runat="server"
            ControlToValidate="txtFromLocation" ValidationGroup="leg">*</asp:RequiredFieldValidator></td>
                    </tr>
                </table>
            </ItemTemplate>
        </asp:DataList>
     </ContentTemplate> </asp:UpdatePanel>

И тогда у меня есть свой javascript. Обычно у него есть куча другого кода, но я могу сократить его до этого и все еще иметь проблему:

$(document).ready(function() {
    $(".searchlocation").livequery(function() {                       
        $(this).keydown(function(event) {alert('test');});   

        ...

        $(this).autocomplete(...);
    });
});

person Jeremy    schedule 03.05.2010    source источник
comment
Предполагая, что вы используете последнюю версию jQuery (которой вы должны быть), вам больше не нужен jQuery.livequery. Вместо этого вы можете использовать jQuery.live(). Это было бы хорошим началом.   -  person Matt Ball    schedule 03.05.2010
comment
@Медведи тебя съедят - я использую 1.4.2. Я использовал jquery, потому что хотел использовать функцию автозаполнения, могу ли я использовать jquery live() без указания типа события, как я могу с livequery?   -  person Jeremy    schedule 03.05.2010


Ответы (1)


Если вы используете jQuery 1.3+, вы можете использовать .live() без каких-либо плагинов, например:

$(function() {
  $('.searchlocation').live('keydown', function(event) {
    alert('test');
  });
});
person Nick Craver    schedule 03.05.2010
comment
Мой пример был упрощен, в дополнение к keydown мне также нужно использовать автозаполнение. - person Jeremy; 04.05.2010
comment
@Jeremy - Где находится ваш код jQuery, он перезагружается на панели обновлений? - person Nick Craver; 04.05.2010
comment
нет, это все в отдельном файле js, на который ссылается тег скрипта в заголовке моей страницы. - person Jeremy; 05.05.2010
comment
@Jeremy - Похоже, что есть ошибка js, когда панель обновлений возвращается, можете ли вы проверить firebug / chrome или указать страницу, на которую я могу перейти? - person Nick Craver; 05.05.2010