jQuery-切片/删除-ID或类名称中的特殊字符

时间:2019-03-22 04:39:43

标签: jquery

对于日语,我正在尝试从后端动态添加日语。

我想忽略特殊字符,因为我收到“

Uncaught Error: Syntax error, unrecognized expression:

是否可以从-(スーペリアルーム)中删除superior-room-(スーペリアルーム)而仅获得superior-room

我需要输出为id =“ superior-room”。

HTML:

    <div id =superior-room-(スーペリアルーム)" class="list-item">
      <p>Title</p>
    </div>

JS:

    var message = '';
    var numAvailableRooms;
    var roomContianerId = $('.list-item').attr('id');

    if (numAvailableRooms < 100) {
      message = '50 rooms left!';
    } else {
      message = 'High demand!';
    }

    if (message == '') {
      $('#' + roomContianerId + ' .demand-message').hide();
    } else {
      $('#' + roomContianerId + ' .demand-message').show();
      $('#' + roomContianerId + ' .demand-message').html(message);
    }

3 个答案:

答案 0 :(得分:1)

使用jQuery,您只能在页面加载后进行更新,要进行更新,您可以使用attr()方法。首先,获取所有具有id属性的元素(使用has attribute selector),并在回调中使用attr()方法来迭代和更新id。

$('[id]').attr('id', function(i, id){
    // replace all character except word char, digit and -
    // using negated character class in regex
    return id.replace(/[^\w\d-]/g, '');
});

要使其完全有效,请参考:Javascript regex to remove illegal characters from DOM ID

$('[id]').attr('id', function(i, id){
    return id.replace(/^[^a-z]+|[^\w:.-]+/gi, "");
});

答案 1 :(得分:0)

使用popsplit,您可以获取不带(スーペリアルーget)的新ID,并将新ID设置为div,如下所示。

var  id = $('div').attr('id');
var arr = id.split("-");
//remove last element from array
var popItem = arr.pop();
//change array back to string and replace , with -
var result = arr.toString().replace(',','-');
//Give New ID for div
$('div').attr('id',result)
console.log($('div').attr('id'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id =superior-room-(スーペリアルーム)" class="list-item">
  <p>Title</p>
</div>

答案 2 :(得分:0)

您可以使用javascripts拼接在上次出现连字符(-)时进行拆分。

var str = "superior-room-(スーペリアルーム)";
var idx = "superior-room-(スーペリアルーム)".lastIndexOf('-');
console.log(str.split('').splice(0,13).join(''));

希望这会有所帮助。