0

我编写了以下代码:

var btnID = $link.attr('id');
var cityNumber = btnID.substring(4);
$('#cityLegend-1').html('City ' + cityNumber);

但是,仅当 btnID 以“btn-”开头时,我才需要这样做来执行最后两行。有没有办法检查这种情况是否发生,然后如果 id 类似于“btn-1”或“btn-999”,那么执行最后两行?

4

5 回答 5

6

您可以使用.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];
于 2012-12-02T04:02:26.647 回答
3
/** .substring() does a length check internally **/
if (btnId.substring(0,3) == "btn") { 
    // do stuff
}
于 2012-12-02T04:02:43.680 回答
1

这么多选择。这也将起作用:

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);
}
于 2012-12-02T04:26:54.933 回答
0

您可以只使用.match()方法并使用正则表达式检查起始“id”是否以btn.

if (btnID.match(/^btn/g)) {
     //do stuff
}
于 2012-12-02T04:36:13.243 回答
0

我不确定您的代码有多灵活,但我通常会以不同的方式处理类似的设置。我会做以下事情(这对你来说可能也可能不可能):

  • 与其在 中搜索以某个字符串开头的元素,不如对您可能感兴趣的所有按钮id使用特定的。这样,您可以使用 jQuery 选择器,例如class$('.mySpecialBtn')
  • 与其在 an 的末尾附加一个整数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
});
于 2012-12-02T04:56:08.623 回答