对于日语,我正在尝试从后端动态添加日语。
我想忽略特殊字符,因为我收到“
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);
}
答案 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)
使用pop
和split
,您可以获取不带(スーペリアルー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(''));
希望这会有所帮助。