首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多个属性的末尾添加一个数字

在多个属性的末尾添加一个数字
EN

Stack Overflow用户
提问于 2017-12-28 01:14:53
回答 2查看 47关注 0票数 0

我正在尝试获取目标div的结束数字,替换并连接两个属性(js-data-reveals),并将该数字添加到末尾(_1)。

我知道这与我用来替换属性的正则表达式有关,但我搞不清楚。

希望你能帮上忙。

代码语言:javascript
复制
$('#js-form-group-UPLOAD_DOCUMENT_ID_1').find('input').each(function() {
  var attrName = 'js-data-reveals';
  var $el = $(this);
  //Get Last Digit from ID
  var idNumber = $el.attr('id').match(/\d+$/);
  var attrs = $el.attr(attrName);
  //Split the two attributes in js-data-reveals
  var data = attrs.split(',').map(function(item) {
    return item.replace(/.{0}$/, function(idNumber) {
      return idNumber
    });
  });
  $el.attr(attrName, data.join(','));
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="js-form-group-UPLOAD_DOCUMENT_ID_1">
  <fieldset>
    <input type="file" class="form-control" id="UPLOAD_DOCUMENT_ID_1"
           js-data-driven="true"
           js-data-reveals="DOCUMENT_TYPE,UPLOAD_DOCUMENT_DESCRIPTION">
  </fieldset>
</div>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-28 01:39:40

match()返回一个数组。

可以使用attr(attrName, function)简化这一过程

代码语言:javascript
复制
$('input[js-data-reveals]').attr('js-data-reveals', function(_, existing) {
  var idNumber = this.id.match(/\d+$/)[0];
  return existing.split(',').map(function(s) {
    // replace number if it already exists or add it if it doesn't
    return s.match(/_\d+$/) 
           ? s.replace(/\d+$/, idNumber)
           : s += '_' + idNumber;
  }).join();
});


console.log($('#UPLOAD_DOCUMENT_ID_1').attr('js-data-reveals'))
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="js-form-group-UPLOAD_DOCUMENT_ID_1">
  <fieldset>
    <input type="file" 
       class="form-control" 
       id="UPLOAD_DOCUMENT_ID_1" 
       js-data-driven="true" 
       js-data-reveals="DOCUMENT_TYPE,UPLOAD_DOCUMENT_DESCRIPTION_999">
  </fieldset>

</div>

票数 0
EN

Stack Overflow用户

发布于 2017-12-28 01:25:59

删除正则表达式中的'+‘,使其成为:

代码语言:javascript
复制
var idNumber = $el.attr('id').match(/\d$/);

'+‘使正则表达式与给定字符匹配1次或多次,因此\d+$将匹配'd12345’中的12345。由于您只希望最后一个数字匹配,因此删除'+‘将使其按预期工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47996116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档