JQuery после AJAX Postback - PullRequest
       0

JQuery после AJAX Postback

0 голосов
/ 22 февраля 2011

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

$(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");
    });
});

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

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

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

Ищите элементы, когда они вам нужны, если их не было в документе во времяDOMReady:

btnDropDown.live("click", function () {
    $("#<%=ListboxWrapper.ClientID %>").not(":animated").slideDown("fast");
    $("#<%=listBox.ClientID %>").focus();
});
0 голосов
/ 22 февраля 2011

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

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