开头的属性的所有元素我试图选择以“框”开头的所有元素。这是我现有的代码:如何选择具有以
if (($(this).attr('title') == 'Box a') || ($(this).attr('title') == 'Box b')) || ($(this).attr('title') == 'Box c')) {
// do stuff
}
有没有办法缩短这个?
谢谢
开头的属性的所有元素我试图选择以“框”开头的所有元素。这是我现有的代码:如何选择具有以
if (($(this).attr('title') == 'Box a') || ($(this).attr('title') == 'Box b')) || ($(this).attr('title') == 'Box c')) {
// do stuff
}
有没有办法缩短这个?
谢谢
使用CSS符号是可能的!
The ^
symbol。
$(element[title^='box']);
选择所有element
元素,标题字段box
开始。
更新:
试试这个。
var regEx = /^Box/;
if(regEx.test($(this).attr('title'))){
}
你可以使用:
$('[title^=box]')
或者,要简化你的搜索,你可以这样做,
var title = $(this).attr('title').replace("Box ", "");
if(['a', 'b', 'c'].indexOf(title) != -1)
{
//do stuff
}
说明:
replace
是JS功能它将使用第二个参数替换您作为parameter1发送的任何字符串。在这里,我将“Box”(包括空格)替换为“”,从字符串中删除并将其关闭。 Docs here['a','b','c']
是一个数组。要搜索该阵列,您可以indexOf
。如果函数返回-1
,则表示标题中没有a或b或c。 Docs here但是,如果你想只检查元素的标题与“盒子”开始,你可以简单地这样做:
var title = $(this).attr('title').split(" ")[0]; //this would give you "Box" alone
if(title.indexOf("Box") != -1)
{
//do stuff
}
希望这将清除的东西了!
这可能会奏效!但是,你能告诉我你为什么使用替换吗?我在jQuery上查找它并找不到该函数的文档。为什么结果是-1? – user2413333
@ user2413333现在检查已更新的答案:) – krishgopinath
搜索代码将_erroneously_匹配标题为“a”的元素,因为它只是_strips_“Box”前缀而不是测试它。 – Alnitak
啊是的,但如果我想使用(this),它将如何在该语法中工作? – user2413333
@ user2413333尝试更新的示例! –