我有一个JQuery脚本,我是从一个有外页的人那里得到的。
$(function () {
var $txt = $('input[id$=TextBoxFiltroProv]');
var $ddl = $('select[id$=DropDownListProv]');
var $items = $('select[id$=DropDownListProv] option');
$txt.keyup(function () {
searchDdl($txt.val());
});
function searchDdl(item) {
$ddl.empty();
var exp = new RegExp(item, "i");
var arr = $.grep($items,
function (n) {
return exp.test($(n).text());
});
if (arr.length > 0) {
countItemsFound(arr.length);
$.each(arr, function () {
$ddl.append(this);
$ddl.get(0).selectedIndex = 0;
}
);
}
else {
countItemsFound(arr.length);
$ddl.append("<option>No Items Found</option>");
}
}
function countItemsFound(num) {
$("#para").empty();
if ($txt.val().length) {
$("#para").html(num + " items found");
}
}
});
它适用于已经呈现所有内容的页面(HTML控件),并且在更新面板中包含一些元素。但在另一页上,我有2个更新面板和一个面板(它开始隐藏)。控件位于ASP.net面板内。 ¿是否隐藏了控件的问题?在那种情况下¿当面板可见并且其控件已经呈现时,如何告诉JQuery启动这段代码?我想我错过了一些东西,但我看不到它。感谢。
答案 0 :(得分:1)
如果在更新面板中动态添加元素,则必须设置委托以绑定到事件。这样,当动态添加元素时,jquery将确保将事件绑定为声明的。
以下示例document
我希望将具有给定选择器input[id$=TextBoxFiltroProv]
的任何元素绑定到现有keyup
的{{1}} event
或onload
为document
之后添加到DOM。
示例:
ready
答案 1 :(得分:0)
我已经解决了这个问题,这是因为updatepanels,我添加了以下代码,用一个名为BindEvents的函数包围我的主代码,在更新面板中我添加了这个脚本:
<asp:UpdatePanel...>
<ContentTemplate>
<script type="text/javascript">
Sys.Application.add_load(BindEvents);
</script>
</ContentTemplate>
</asp:UpdatePanel>