编写 jQuery 选择器不区分大小写的版本
我正在使用以下行,我想使其不区分大小写:
var matches = $(this).find('div > span > div#id_to_find[attributeName ^= "filter"]');
if (matches.length > 0) {
}
我的问题是如何使选择器 ^=
不区分大小写?也许更改为过滤器然后使用一些正则表达式?
I'm using following line and I would like to make it case-insensitive:
var matches = $(this).find('div > span > div#id_to_find[attributeName ^= "filter"]');
if (matches.length > 0) {
}
My question is that how can I make the selector ^=
to be case-insensitive? Maybe changing to filter and then some regexp?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要进行不区分大小写的属性选择,您需要编写自定义选择器函数。
您可以这样使用它:
这将匹配
type
属性以R
或r
开头的任何input
元素(因此它将匹配RADIO
、radio
、RESET
或reset
)。这是一个非常愚蠢的例子,但它应该可以满足您的需要。关于该功能很难理解的评论,我会稍微解释一下。
这是创建自定义选择器的标准签名。
meta
是有关调用的详细信息的数组。meta[3]
是作为参数传递的字符串。在我的示例中,这是type, r
。正则表达式分别匹配type
和r
。如果这两个条件都为 true,则返回:
opts[1] in obj
)我本可以使用 jQuery 语法而不是本机 JS 语法使其更易于阅读,但这意味着性能下降。
To do a case-insensitive attribute selection, you need to write a custom selector function.
You can use this like this:
This will match any
input
elements whosetype
attribute begins withR
orr
(so it would matchRADIO
,radio
,RESET
orreset
). This is a pretty silly example, but it should do what you need.Re the comment that the function is hard to understand, I'll explain it a little.
This is the standard signature for creating custom selectors.
meta
is an array of details about the call.meta[3]
is the string passed as the parameter. In my example, this istype, r
. The regex matchestype
andr
separately.Return if both these are true:
opts[1] in obj
)I could have made this easier to read using jQuery syntax rather than native JS syntax, but that would have meant reduced performance.
在这里您可以看到:
http://www.ericmmartin.com/creating-a -custom-jquery-selector/
你所要做的就是创建一个自定义 jquery 选择器:
然后使用它:
Here you can see:
http://www.ericmmartin.com/creating-a-custom-jquery-selector/
What you have to do is to create a custom jquery selector:
And then just use it:
使用lonesomeday的答案时有一个小问题。
要重现该错误,请尝试以下操作:
页面上的 HTML 标记是常见的 Facebook 元标记:
选择器:
这不起作用。原因是因为当选择器代码到达语句
(opts[1] in obj)
它将执行
("property" in obj)
并返回 false。 (我不知道为什么)为了解决这个问题,我只是将最后一行更改为使用 jQuery 的 attr() 方法
There's a slight problem when using lonesomeday's answer.
To reproduce the error, try this:
HTML tag on page is a common Facebook meta tag:
Selector:
This will not work. The reason is because when the selector code gets to the statement
(opts[1] in obj)
it will execute
("property" in obj)
which returns false. (I don't know why)To fix this problem, I just changed the last line to use jQuery's attr() method