你写过哪些有用的自定义 jQuery 选择器?

Posted

技术标签:

【中文标题】你写过哪些有用的自定义 jQuery 选择器?【英文标题】:What useful custom jQuery selectors have you written? 【发布时间】:2010-12-28 18:35:35 【问题描述】:

对我来说,jQuery 最好但未被充分利用的特性之一是custom selector。我有一个相当简单的例子,挑选出所有空的文本框:

$(document).ready(function() 
    $.extend($.expr[':'], 
        textboxEmpty: function(el) 
            var $el = $(el);
            return ($el.val() == "") && ($el.attr("type") == "text");
        
    );
);

并致电:

alert($(":textboxEmpty").length);

真的,我想知道是否有其他人有他们编写的自定义选择器的一些有用示例。

当然,我并没有对这些陷阱视而不见,并意识到它们可能非常慢,因此应该与其他更快的选择器结合使用。如果有任何其他我们应该注意的问题,听听会很有用。

【问题讨论】:

不,但这是一个不错的扩展,感谢您发布它。 我从不需要编写自定义选择器,因为 jQuery 已经足够强大了 @Josh:我不太确定,如果你了解 Sizzle(jQuery 的选择器引擎)的这个特性。 【参考方案1】:

我还没有写任何东西,但James Padolsey 有一个great collection 的选择器插件(用于视图中的元素、用于外部链接、用于具有特定.data 属性的元素等)

【讨论】:

【参考方案2】:

如果您使用的是 ASP.NET,此选择器将帮助您按 id 查找服务器控件:

$.expr[":"].asp = function(a, i, m) 
    return $(a).attr('id') && $(a).attr('id').endsWith(m[3]);
;

如果你有一个看起来像这样的服务器控件

<asp:TextBox runat="server" ID="txtPhoneNumber" />

你可以这样访问它

$(":asp(txtPhoneNumber)")

编辑

忘记添加endsWith扩展名

String.prototype.endsWith = function(str) 
    return (this.match(str + '$') == str);
;

【讨论】:

喜欢!不太清楚函数参数上的 i 和 m 是干什么用的。 我认为i 是为了索引,不过不要引用我的话。 偷偷摸摸是正确的,我是索引。 m 返回一个数组,在这种情况下将返回 [":asp(txtPhoneNumber)", "asp", "", "txtPhoneNumber"] 所以我使用 m[3] 来获取我传入的 id 为什么 ASPNET 需要不同的基于 id 的选择器?是不是 .aspx 文件中的 ID 与生成的 .html 文件中的结果 ID 不同? @James Wiseman:jquery-howto.blogspot.com/2009/06/…【参考方案3】:

由于 *** 上建议使用自定义选择器,我将在此处添加它们

Select 'URL' style

Selecting empty text input using jQuery

【讨论】:

以上是关于你写过哪些有用的自定义 jQuery 选择器?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery中数据的自定义选择器不起作用

不为空的自定义数据属性上的 jQuery 选择器

jquery选择器都有哪些

Jquery常用的选择器有哪些?

如何用jquery获取页面中的自定义标签

使用 ag-grid 进行单元格编辑的自定义日期选择器