我正在尝试选择以“框”开头的所有元素。这是我现有的代码:
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 符号是可能的!
^
符号。
$(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”(包括空格)替换为“”,实际上是从字符串中删除它并关闭它。文档在这里['a','b','c']
是一个数组。要在该数组中搜索,您可以indexOf
. 如果函数返回-1
,则意味着标题中没有 a 或 b 或 c 。文档在这里 但是,如果您只想检查元素的标题是否以“Box”开头,您可以简单地执行以下操作:
var title = $(this).attr('title').split(" ")[0]; //this would give you "Box" alone
if(title.indexOf("Box") != -1)
{
//do stuff
}
希望这可以解决问题!