我在处理身份证号码时有这个问题。 我试图删除一些添加的行,当它达到10以上时,它没有删除正确的行。 就像如果我愿意的话第11排。 它将删除行1而不是行11,它只能找到#Field1而不是#Field11。 有没有人能帮我解决这个问题?
$('.remove-me').click(function(e){
e.preventDefault();
var fieldNum = this.id.charAt(this.id.length-1);
var fieldID = "#field" + fieldNum;
$(this).remove();
$(fieldID).remove();
});
如果您的ID总是喜欢字段..
,请尝试regex
null
$('.remove-me').click(function(e){
e.preventDefault();
var numberPattern = /\d+/g;
var fieldNum = this.id.match( numberPattern ).join('');
var fieldID = "#field" + fieldNum;
console.log(fieldNum)
$(this).remove();
$(fieldID).remove();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="btn remove-me"id="field10">10</a>
<a class="btn remove-me"id="field1">1</a>
您似乎只剪切了id
的最后一个字符,如this.id.length-1
所示。 你能试试这样的东西吗:
$('.remove-me').click(function(e) {
if (this.id.match(/[0-9]+$/)) {
e.preventDefault();
var fieldNum = this.id.match(/[0-9]+$/)[0];
var fieldId = '#field' + fieldNum;
$(this).remove();
$(fieldId).remove();
}
});
通过与/[0-9]+$/
匹配,您可以剪切ID
末尾的任意数字串。
您只得到id的最后一位数字,因此对于两位数是不起作用的。 如果您喜欢丑陋的解决方案,而一些编码人员也喜欢这种东西,那么就使用正则表达式。 但是如果你在生活中喜欢一点优雅,那么使用36(0-9a-z)基数,这样在你用完之前你就有更多的个位数了。