我编写了以下代码:
var btnID = $link.attr('id');
var cityNumber = btnID.substring(4);
$('#cityLegend-1').html('City ' + cityNumber);
但是,仅当 btnID 以“btn-”开头时,我才需要这样做来执行最后两行。有没有办法检查这种情况是否发生,然后如果 id 类似于“btn-1”或“btn-999”,那么执行最后两行?
我编写了以下代码:
var btnID = $link.attr('id');
var cityNumber = btnID.substring(4);
$('#cityLegend-1').html('City ' + cityNumber);
但是,仅当 btnID 以“btn-”开头时,我才需要这样做来执行最后两行。有没有办法检查这种情况是否发生,然后如果 id 类似于“btn-1”或“btn-999”,那么执行最后两行?
您可以使用.eq(-index)
, 从集合中的最后一个元素向后传递索引。
$('[id^=cityLegend-]').eq(-1) for last
$('[id^=cityLegend-]').eq(-2) for second last
编辑,您可以使用 split 而不是 substring 来获取连字符后的数字。
var btnID = $link.attr('id');
var cityNumber = btnID.spilt('-')[1];
/** .substring() does a length check internally **/
if (btnId.substring(0,3) == "btn") {
// do stuff
}
这么多选择。这也将起作用:
var btnID = $(link).attr('id');
if(btnID.substr(0,4) == 'btn-'){
var cityNumber = btnID.substring(4);
$('#cityLegend-1').text('City ' + cityNumber);
}else{
$('#cityLegend-1').text('City ' + btnID);
}
您可以只使用.match()方法并使用正则表达式检查起始“id”是否以btn
.
if (btnID.match(/^btn/g)) {
//do stuff
}
我不确定您的代码有多灵活,但我通常会以不同的方式处理类似的设置。我会做以下事情(这对你来说可能也可能不可能):
id
使用特定的。这样,您可以使用 jQuery 选择器,例如class
$('.mySpecialBtn')
id
然后解析它,为什么不直接使用一个data
属性来包含 id,即data-my-button-id="1"
?所以把这两个部分放在一起,你可以有这样的东西:
HTML:
<button class="mySpecialBtn" data-my-button-id="1">Button 1</button>
<button class="mySpecialBtn" data-my-button-id="2">Button 2</button>
<button class="mySpecialBtn" data-my-button-id="3">Button 3</button>
JS:
$('mySpecialBtn').each(function() {
var btnId = $(this).data("my-button-id"));
// do something with btnId
});