我正在尝试查找具有动态生成的ID的ajax.net扩展程序元素。我正在尝试连接一个事件处理程序,以便在按下“退出”时关闭所有ajax.net模式弹出窗口。我搞不懂为什么其中一个行得通,而另一个不行。
$find('ctl00_MainContent_ucUserControl1_mpePopup'); //returns the element
$find('[id="ctl00_MainContent_ucUserControl1_mpePopup"]'); //returns null最终目标是能够在不将ID硬连接到选择器的情况下找到元素:
$find('[id$="_mpePopup"]'); //return all elements that end with "_mpePopup"发布于 2011-03-03 00:26:35
我现在明白了,$find和.find()是有区别的。
var popups = $.grep(Sys.Application.getComponents(),
function (elem, index) {
return $(elem).attr('_name') == 'ModalPopupBehavior';
}
);
$(popups).each(function () { this.hide(); });问题是$find(id)只返回Sys.Application._componentsid处的元素。‘is’在这种情况下是一个索引,所以你不能使用部分字符串或模式。
一旦将该集合转换为数组,就可以对其使用jQuery.grep()来返回满足某些条件的元素数组(在本例中,我注意到'_name‘比属性选择器更容易使用),并使用jQuery.each()遍历它们。
发布于 2011-03-01 11:30:48
我相信您会发现$find操作只需要一个ID,除非我大错特错,否则它没有模式匹配功能。(有关$find和$get的其他信息,请参阅http://mattberseth.com/blog/2007/08/the_everuseful_get_and_find_as.html)
您可以考虑使用非常有用的<%= mpePopup.ClientID %>页面文字绑定语法或其他适合您的情况的方法,用已知的popup客户机ID填充JavaScript变量。下面是一个简单的ASPX标记示例,其中mpePopup是页面类的成员:
<script type="text/javascript">
function closePopup() {
var mpePopupID = '<%= mpePopup.ClientID %>';
var mpePopupBehavior = $find(mpePopupID);
// ...
}
</script>https://stackoverflow.com/questions/5150094
复制相似问题