首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择ajax.net元素时出现jQuery .find(选择器)故障

选择ajax.net元素时出现jQuery .find(选择器)故障
EN

Stack Overflow用户
提问于 2011-03-01 11:09:58
回答 2查看 963关注 0票数 1

我正在尝试查找具有动态生成的ID的ajax.net扩展程序元素。我正在尝试连接一个事件处理程序,以便在按下“退出”时关闭所有ajax.net模式弹出窗口。我搞不懂为什么其中一个行得通,而另一个不行。

代码语言:javascript
复制
$find('ctl00_MainContent_ucUserControl1_mpePopup'); //returns the element
$find('[id="ctl00_MainContent_ucUserControl1_mpePopup"]'); //returns null

最终目标是能够在不将ID硬连接到选择器的情况下找到元素:

代码语言:javascript
复制
$find('[id$="_mpePopup"]');  //return all elements that end with "_mpePopup"
EN

回答 2

Stack Overflow用户

发布于 2011-03-03 00:26:35

我现在明白了,$find和.find()是有区别的。

代码语言:javascript
复制
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()遍历它们。

票数 1
EN

Stack Overflow用户

发布于 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是页面类的成员:

代码语言:javascript
复制
<script type="text/javascript">
    function closePopup() {
        var mpePopupID = '<%= mpePopup.ClientID %>';
        var mpePopupBehavior = $find(mpePopupID);
        // ...
    }
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5150094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档