AJAX Postback之后的jQuery

时间:2011-02-22 13:02:51

标签: ajax jquery

在遭受部分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 个答案:

答案 0 :(得分:2)

listBoxWrapper中的项目列表填充在DOMReady中。如果稍后将某些项添加到DOM中,那将与选择器匹配,则它们将不在该集合中。

在DOMReady期间,如果项目不在文档中,请在需要时查找项目:

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

答案 1 :(得分:0)

listBoxWrapper.not(":animated").length上的提醒是否会返回任何匹配的元素。这是一个不工作的是吗?