2011-02-22 3 views
0

После страдания от событий, которые больше не срабатывали после частичного возврата AJAX, я модифицировал все свои функции .bind() в .live(). Поэтому у меня есть это:jQuery после AJAX Postback

$(document).ready(function() 
{ 
    var listBox = $("#<%=listBox.ClientID %>"); 
    var btnDropDown = $("#<%=btnDropDown.ClientID %>"); 
    var listBoxWrapper = $("#<%=ListboxWrapper.ClientID %>") 
    var inputBox = $("#<%=inputBox.ClientID %>") 

    btnDropDown.live("click", function() { 
     listBoxWrapper.not(":animated").slideDown("fast"); 
     listBox.focus(); 
    }); 

    listBoxWrapper.live("focusout", function() { 
     listBoxWrapper.slideUp("fast"); 
    }); 

    listBoxWrapper.live("click", function() { 
     var inputtedText = listBox.val(); 
     inputBox.val(inputtedText) 
     listBoxWrapper.slideUp("fast"); 
    }); 
}); 

Использование предупреждения() коробки теперь я могу быть уверен, что клики все еще стреляя событие после постбэк (предполагаемый результат), однако .slidedown («быстрого») по-прежнему, как представляется, не работа. Любые идеи о том, в чем проблема?

ответ

2

Перечень объектов в listBoxWrapper заселен в DOMReady. Если элементы добавлены в DOM позже, это будет соответствовать селектору, они не будут в этой коллекции.

Посмотрите на предметы, когда вы нуждаетесь в них, если они не были в документе во время DOMReady:

btnDropDown.live("click", function() { 
    $("#<%=ListboxWrapper.ClientID %>").not(":animated").slideDown("fast"); 
    $("#<%=listBox.ClientID %>").focus(); 
}); 
0

ли предупреждение о listBoxWrapper.not(":animated").length возвращения любых соответствующих элементов. Это тот, который не работает да?

Смежные вопросы