Tx3*_*Tx3 6 jquery jquery-selectors
我正在使用以下行,我想使它不区分大小写:
var matches = $(this).find('div > span > div#id_to_find[attributeName ^= "filter"]');
if (matches.length > 0) {
}
我的问题是如何使选择器^=不区分大小写?也许改为过滤然后一些正则表达式?
要执行不区分大小写的属性选择,您需要编写自定义选择器函数.
$.expr[':'].iAttrStart = function(obj, params, meta, stack) {
    var opts = meta[3].match(/(.*)\s*,\s*(.*)/);
    return (opts[1] in obj) && (obj[opts[1]].toLowerCase().indexOf(opts[2].toLowerCase()) === 0);
};
您可以这样使用:
$('input:iAttrStart(type, r)')
这将匹配任何input其元素type属性开始R或r(所以它会匹配RADIO,radio,RESET或reset).这是一个非常愚蠢的例子,但它应该做你需要的.
重新评论该功能很难理解,我会稍微解释一下.
$.expr[':'].iAttrStart = function(obj, params, meta, stack) {
这是创建自定义选择器的标准签名.
var opts = meta[3].match(/(.*)\s*,\s*(.*)/);
meta是一系列有关通话的详细信息.  meta[3]是作为参数传递的字符串.在我的例子中,这是type, r.正则表达式匹配type和r分开.
return (opts[1] in obj) && (obj[opts[1]].toLowerCase().indexOf(opts[2].toLowerCase()) === 0);
如果这两个都是真的,则返回:
opts[1] in obj)我本可以使用jQuery语法而不是本机JS语法来更容易阅读,但这意味着性能会降低.
| 归档时间: | 
 | 
| 查看次数: | 5524 次 | 
| 最近记录: |