在遭受部分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(“快速”)仍然看起来不起作用。关于问题是什么的任何想法?
答案 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
上的提醒是否会返回任何匹配的元素。这是一个不工作的是吗?