我正在尝试为YouTube编写用户脚本,该用户脚本将根据标题选择页面上的所有视频,这些标题也会设置为缩略图“title
属性。
以下工作正常,但它区分大小写:
var videoTitle = "the";
$('img[title*="'+videoTitle+'"]').each(function() {
// stuff here
});
上面的选择器会匹配标题中带有“the”的所有视频,但不会匹配“The”或“THE”。
我确实读过我可以使用.filter()
以某种方式完成此操作,但我不确定它是如何工作的,而且我找不到一个能够成功适应我的场景的示例。
我根据我在StackOverflow上找到的一个例子尝试了类似的东西,但它不起作用:
$('img[title]').filter(function(){return this.title.toLowerCase() == videoTitle}).each(function() {
// stuff here
});
答案 0 :(得分:9)
这是改编自Karl Swedburg关于'Attributes Contains Selector'的jQuery docs page的帖子。它使用RegEx和i
不区分大小写的开关以及filter
函数 -
<img title="Star Wars"/>
<img title="Star Wars 2"/>
<img title="Star Wars 3"/>
<img title="Back To The Future"/>
var videoTitle = "star wars";
var re = RegExp(videoTitle ,"i");
$('img[title]').filter(function() {
return re.test(this.title);
}).each(function() {alert(this.title)});
应该提醒三部“星球大战”电影的名字。
答案 1 :(得分:1)
示例 -
$('img').filter(function(){
return this.title.match(RegExp(videoTitle ,"i"))
}).each(function(){
alert(this.title);
})
答案 2 :(得分:0)
使用过滤器选项,只需将功能更改为
return this.title.toLowerCase().indexOf(videoTitle) >= 0
否则它只匹配'the',而不是包含'the'的东西(如果那就是你想要的东西) 编辑:此外,不确定this.title是否正常,但也许如果以上不起作用,请尝试$(this).attr('title')
答案 3 :(得分:0)
$('img').filter(function (index) { return this.title.toLowerCase() === videoTitle; })
答案 4 :(得分:0)
这应该有效:
var videoTitle = "bla";
$('img').filter(function() {
return $(this).attr('title').toLowerCase() == videoTitle;
}).each(function() {
// do something
});